RAGNAROK BATTLE OFFLINE WEB

EX 1-3 Engine
WARNING
⚠️ DANGER! BOSS APPROACHING ⚠️
STAGE CLEAR!
S
Final Score 0
Max Combo 0 HITS
Player Level Lv.1
Boss Defeated BAPHOMET (MVP)
1P: WASD + J Light | K Mid | I Heavy | Space Skill  |  2P: Arrows + Num 1 Light | Num 2 Mid | Num 3 Jump

👥 SELECT CHARACTER / เลือกตัวละครจริง (RBO Roster)

♂ ชาย
⚔️
Swordman (ชาย)
นักดาบหนุ่มผู้กล้าหาญ
HP: 1,350 | STR 85 | VIT 90
⚡ Bash / Magnum Break
♀ หญิง
🗡️
Swordman (หญิง)
นักดาบสาวผู้ปราดเปรียว
HP: 1,250 | AGI 75 | STR 80
⚡ Swift Combos / Bash
♂ ชาย
👊
Acolyte (ชาย)
นักบวชสายประชิด (Battle Monk)
HP: 1,150 | STR 70 | INT 80
✨ Holy Light / Heal & Revive
♀ หญิง
✨
Acolyte (หญิง)
นักบวชสาวผู้เปี่ยมศรัทธา
HP: 1,100 | INT 95 | SP 380
✨ High SP Support / Heal / Angelus
♂ ชาย
🏹
Archer (ชาย)
นักธนูผู้แม่นยำ
HP: 1,100 | DEX 90 | AGI 80
🏹 Double Strafe / Arrow Shower
♀ หญิง
🎯
Archer (หญิง)
นักธนูสาวแห่งพงไพร
HP: 1,050 | DEX 92 | AGI 85
🏹 Double Strafe / Arrow Shower
♂ ชาย
🔮
Magician (ชาย)
จอมเวทผู้ทรงปัญญา
HP: 950 | INT 98 | SP 450
🔥 Fire Ball / Thunder Storm
♀ หญิง
🪄
Magician (หญิง)
แม่มดน้อยพลังเวทสูง
HP: 900 | INT 100 | SP 480
✨ Soul Strike / Thunder Storm
♂ ชาย
🗡️
Thief (ชาย)
จอมโจรเงาผู้รวดเร็ว
HP: 1,180 | AGI 95 | LUK 65
⚡ Double Attack / Envenom & Leap
♀ หญิง
🥷
Thief (หญิง)
นางโจรสาวสะบัดมีด
HP: 1,120 | AGI 98 | LUK 70
⚡ Double Attack / Envenom & Leap
♂ ชาย
💰
Merchant (ชาย)
พ่อค้าจอมพลังหมัดหนัก
HP: 1,300 | STR 88 | VIT 85
🪙 Mammonite / Cart Revolution
♀ หญิง
🛒
Merchant (หญิง)
แม่ค้าสาวเสน่ห์แรง
HP: 1,240 | STR 82 | VIT 80
🪙 Mammonite / Cart Revolution
♂ ชาย
🔰
Novice (ชาย)
ผู้เริ่มต้นผู้ไม่ยอมแพ้
HP: 1,000 | LUK 80 | ALL 50
👞 Throw Shoe / Play Dead
♀ หญิง
🎀
Novice (หญิง)
สาวน้อยผู้เริ่มต้น
HP: 950 | LUK 85 | ALL 52
👞 Throw Shoe / Play Dead
🎮 Special Command Motion: Bash / Holy Light: ↓ → + Light หรือ Space Magnum Break / Heal: ↓ ↑ + Heavy หรือ U
    Select a file from the left to inspect and preview.
    🔍

    Select any game texture (.IMG) or sound effect (.WAV) to preview.

    🛠️ รายงานการ Reverse Engineering: Ragnarok Battle Offline (French-Bread)

    โปรเจกต์นี้เป็นการแกะโครงสร้างภายใน (Reverse Engineering) ของตัวเกม Ragnarok Battle Offline (RBO EX 1-3) ที่พัฒนาโดยค่าย French-Bread (Watanabe Seisakujo) ในปี 2004–2006 และแปลงโครงสร้างทั้งหมดให้สามารถรันบนเว็บเบราว์เซอร์สมัยใหม่ได้ทันที

    1. โครงสร้างไฟล์บีบอัด (.PAC Archive)

    ไฟล์ทรัพยากรหลักทั้งหมดถูกรวมไว้ในแพ็กเกจ .PAC (เช่น DATA01.PAC, BG01.PAC, SE.PAC) จากการวิเคราะห์ Binary rbo.exe ที่ออฟเซต 0x00022a10 - 0x00022ad0 พบขั้นตอนการถอดรหัสและโครงสร้างดังนี้:

    ออฟเซต (Offset)ขนาดคำอธิบาย
    0x00 - 0x034 BytesVersion Header (ค่าคงที่ 0x00000001)
    0x04 - 0x074 Bytesจำนวนไฟล์ในแพ็ก (XOR Key: 0xE3DF59AC)
    0x08 - ...FileCount * 68 Bytesตารางสารบัญไฟล์ (File Allocation Table) ขนาดแถวละ 68 Bytes

    สูตรการถอดรหัสชื่อไฟล์ (Rotating Stream Cipher):

    // สำหรับไฟล์ลำดับที่ i และตัวอักษรตำแหน่งที่ c (0..58):
    const key = ((i * c * 3) + 0x3d) & 0xff;
    const decryptedChar = entryBytes[c] ^ key;

    สูตรการถอดรหัสขนาดและตำแหน่งไฟล์:

    const fileOffset = entry.readUInt32LE(0x3c);
    const fileSize   = entry.readUInt32LE(0x40) ^ 0xe3df59ac;

    2. โครงสร้างไฟล์รูปภาพและฉาก (.IMG)

    ไฟล์ .IMG เก็บภาพพื้นหลัง (Background) และ UI ในรูปแบบ Raw 32-bit BGRA Surface (DirectDraw 7 Surface) โดยมี Header ขนาด 20 Bytes:

    ฟิลด์ชนิดข้อมูลคำอธิบาย
    Header[0..2]3x uint32Format descriptor & Channel flags (0, 7, 2)
    Widthuint32 (Offset 12)ความกว้างของภาพ (เช่น 512, 1024, 2048)
    Heightuint32 (Offset 16)ความสูงของภาพ (เช่น 512, 1024)
    PixelsWidth * Height * 4 BytesPixel Data เรียงแบบ B, G, R, A ทีละไบต์

    3. โครงสร้างตัวละครและแอนิเมชัน (.DAT / HAN2RBO)

    ข้อมูลตัวละครใน DATA02.PAC (เช่น SWORDMAN_M.DAT, ACOLYTE_F.DAT) เป็นโครงสร้าง Hantei 2 (HAN2) ซึ่งแบ่งออกเป็น 5 ส่วนหลัก:

    • 0x40 - 0x4B868: Pattern & Hitbox Definition (กล่องชน, กล่องรับดาเมจ, ระยะโจมตี)
    • 0x4B8A8 - ...: Frame Sequence Timeline (ลำดับเฟรมและเวลาแสดงผล)
    • BMP Cutter3 Section: สารบัญพิกัดตัดสไปรต์ (Sprite Slicing Coordinates) พร้อม 16 Color Palettes (โดยสีแรกคือ 0x00FF00 หรือ Green Key เพื่อทำ Transparency)
    • 8-bit Paletted Texture Sheets: แผ่นสไปรต์ขนาด 512x512 พิกเซล เก็บเป็น Index 0-255 โดยแปลงผ่าน Palette 256 สี
    • Shift-JIS Animation States: ตารางชื่อท่าโจมตีและการเคลื่อนไหวภาษาญี่ปุ่น เช่น 立ち (ยืน), 前進 (เดินหน้า), 立ち弱攻撃 (ฟันเบา), 立ち中攻撃 (ฟันกลาง), 立ち強攻撃 (ฟันหนัก)

    4. การพอร์ตสู่เว็บบราวเซอร์ (Web Port Architecture)

    ตัวเกมเวอร์ชันเว็บทำงานผ่าน HTML5 Canvas 2D + Web Audio API + Gamepad API โดยนำไฟล์ Background จาก BG01.PAC, เสียงจาก SE.PAC, ดนตรีจาก BGM.PAC และสไปรต์ตัวละครมาประกอบเป็น Beat 'em up Game Engine ที่รันที่ 60 FPS บนทุกอุปกรณ์ (Desktop, Mobile, Tablet, Gamepad)!