Author Topic: Final Fantasy IX scripts.  (Read 5749 times)

Akari

  • *
  • Posts: 766
    • View Profile
Final Fantasy IX scripts.
« on: 2011-03-14 11:08:35 »
For those who interested i finish first approach to FFIX scripts.

All opcodes in scene 0 (very first scene after intro movie) are parsed correctly.

Code: [Select]
ENTITY: entity_id = 0x00
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x015a    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0x7f ); // 05 c5 9f 7d 00 00 2c 7f
0x0162    [ script + 0x0011 ] = b( 0x000000ff ); // 05 d5 11 7d ff 00 2c 7f
0x016a    [ 0x8007aef0 + 0x0017 ] = b( b[ 0x8007aef0 + 0x0017 ] & 0x7f ); // 05 c4 bf 7d 00 00 2c 7f
0x0172    JumpIf( ( (bu[ 0x8007aef0 + 0x0017 ] >> 0x00) & 1 == 0x00000001 ) == false )To( 0x0185 ); // 05 c4 b8 7d 01 00 20 7f 02 08 00
0x017d    [ 0x8007aef0 + 0x0002 ] = h( 0x00002710 ); // 05 d8 02 7d 10 27 2c 7f
0x0185    [ 0x8007aef0 + 0x0017 ] = b( b[ 0x8007aef0 + 0x0017 ] & 0xfe ); // 05 c4 b8 7d 00 00 2c 7f
0x018d    [ 0x8007aef0 + 0x0009 ] = h( 0x00000283 ); // 05 d8 09 7d 83 02 2c 7f
0x0195    JumpIf( ( bu[ 0x8007aef0 + 0x000d ] == 0x00000009 ) == false )To( 0x01a3 ); // 05 d4 0d 7d 09 00 20 7f 02 03 00
0x01a0    JumpTo( 0x01de ); // 01 3b 00
0x01a3    JumpIf( ( ( bu[ 0x8007aef0 + 0x000d ] == 0x00000002 ) && ( h[ 0x8007aef0 + 0x0009 ] < 0x00000000 ) ) == false )To( 0x01c0 ); // 05 d4 0d 7d 02 00 20 d8 09 7d 00 00 18 27 7f 02 0b 00
0x01b5    [ 0x8007aef0 + 0x000d ] = b( 0x00000009 ); // 05 d4 0d 7d 09 00 2c 7f
0x01bd    JumpTo( 0x01de ); // 01 1e 00
0x01c0    JumpIf( ( h[ 0x8007aef0 + 0x0009 ] < 0x00000000 ) == false )To( 0x01d6 ); // 05 d8 09 7d 00 00 18 7f 02 0b 00
0x01cb    [ 0x8007aef0 + 0x000d ] = b( 0x00000000 ); // 05 d4 0d 7d 00 00 2c 7f
0x01d3    JumpTo( 0x01de ); // 01 08 00
0x01d6    [ 0x8007aef0 + 0x000d ] = b( 0x00000001 ); // 05 d4 0d 7d 01 00 2c 7f
0x01de    [ 0x8007aef0 + 0x000b ] = h( 0x0000ffff ); // 05 d8 0b 7d ff ff 2c 7f
0x01e6    JumpIf( ( bu[ 0x8007aef0 + 0x000e ] == 0x00000009 ) == false )To( 0x01f4 ); // 05 d4 0e 7d 09 00 20 7f 02 03 00
0x01f1    JumpTo( 0x022f ); // 01 3b 00
0x01f4    JumpIf( ( ( bu[ 0x8007aef0 + 0x000e ] == 0x00000002 ) && ( h[ 0x8007aef0 + 0x000b ] < 0x00000000 ) ) == false )To( 0x0211 ); // 05 d4 0e 7d 02 00 20 d8 0b 7d 00 00 18 27 7f 02 0b 00
0x0206    [ 0x8007aef0 + 0x000e ] = b( 0x00000009 ); // 05 d4 0e 7d 09 00 2c 7f
0x020e    JumpTo( 0x022f ); // 01 1e 00
0x0211    JumpIf( ( h[ 0x8007aef0 + 0x000b ] < 0x00000000 ) == false )To( 0x0227 ); // 05 d8 0b 7d 00 00 18 7f 02 0b 00
0x021c    [ 0x8007aef0 + 0x000e ] = b( 0x00000000 ); // 05 d4 0e 7d 00 00 2c 7f
0x0224    JumpTo( 0x022f ); // 01 08 00
0x0227    [ 0x8007aef0 + 0x000e ] = b( 0x00000001 ); // 05 d4 0e 7d 01 00 2c 7f
0x022f    Set16e8and16ea( 0x00, 0x00 ); // 67 00 00 00
0x0233    InitScriptEntity( entity_id = 0x02, shared_id = 0x00 ); // 07 02 00
0x0236    InitScriptEntity( entity_id = 0x03, shared_id = 0x00 ); // 07 03 00
0x0239    Set8007bbd8( 0x00 ); // e3 00 00
0x023c    InitModelEntity( entity_id = 0x11, shared_id = 0x00 ); // 09 11 00
0x023f    InitModelEntity( entity_id = 0x16, shared_id = 0x00 ); // 09 16 00
0x0242    InitModelEntity( entity_id = 0x18, shared_id = 0x00 ); // 09 18 00
0x0245    InitModelEntity( entity_id = 0x17, shared_id = 0x00 ); // 09 17 00
0x0248    InitModelEntity( entity_id = 0x0d, shared_id = 0x00 ); // 09 0d 00
0x024b    InitModelEntity( entity_id = 0x0f, shared_id = 0x00 ); // 09 0f 00
0x024e    InitType3Entity( entity_id = 0x04, shared_id = 0x00 ); // 08 04 00
0x0251    InitType3Entity( entity_id = 0x05, shared_id = 0x00 ); // 08 05 00
0x0254    InitType3Entity( entity_id = 0x06, shared_id = 0x00 ); // 08 06 00
0x0257    InitType3Entity( entity_id = 0x07, shared_id = 0x00 ); // 08 07 00
0x025a    InitScriptEntity( entity_id = 0x0b, shared_id = 0x00 ); // 07 0b 00
0x025d    InitScriptEntity( entity_id = 0x08, shared_id = 0x00 ); // 07 08 00
0x0260    InitScriptEntity( entity_id = 0x09, shared_id = 0x00 ); // 07 09 00
0x0263    InitScriptEntity( entity_id = 0x0a, shared_id = 0x00 ); // 07 0a 00
0x0266    InitScriptEntity( entity_id = 0x0c, shared_id = 0x00 ); // 07 0c 00
0x0269    Set8007bbe0_8007bbe8( 0x00 ); // ef 00 00
0x026c    Set16f8to1(); // 6a
0x026d    [ script + 0x0018 ] = b( 0x00000000 ); // 05 d5 18 7d 00 00 2c 7f
0x0275    JumpIf( ( (bu[ script + 0x0013 ] >> 0x06) & 1 == 0x00000000 ) == false )To( 0x0286 ); // 05 c5 9e 7d 00 00 20 7f 02 06 00
0x0280    Set800c9df1( 0x7f ); // 27 00 7f
0x0283    JumpTo( 0x0289 ); // 01 03 00
0x0286    Set800c9df1( 0xff ); // 27 00 ff
0x0289    Wait( 0x02 ); // 22 00 02
0x028c    Wait( 0x02 ); // 22 00 02
0x028f    JumpIf( ( bu[ 0x8007aef0 + 0x000d ] == 0x00000009 ) == false )To( 0x02b1 ); // 05 d4 0d 7d 09 00 20 7f 02 17 00
0x029a    Set8007bba8( 0x02, 0x0000 ); // 66 00 02 00 00
0x029f    0x20Async( 0x06, 0x00, 0x0003 ); // 20 00 06 00 03 00
0x02a5    0x8e(); // 8e
0x02a6    0x54( 0x06 ); // 54 00 06
0x02a9    [ 0x8007aef0 + 0x000d ] = b( 0x00000000 ); // 05 d4 0d 7d 00 00 2c 7f
0x02b1    JumpIf( ( bu[ 0x8007aef0 + 0x000e ] == 0x00000009 ) == false )To( 0x02d3 ); // 05 d4 0e 7d 09 00 20 7f 02 17 00
0x02bc    Set8007bba8( 0x02, 0x0001 ); // 66 00 02 01 00
0x02c1    0x20Async( 0x06, 0x00, 0x0003 ); // 20 00 06 00 03 00
0x02c7    0x8e(); // 8e
0x02c8    0x54( 0x06 ); // 54 00 06
0x02cb    [ 0x8007aef0 + 0x000e ] = b( 0x00000000 ); // 05 d4 0e 7d 00 00 2c 7f
0x02d3    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x80 ); // 05 c5 9f 7d 01 00 2c 7f
0x02db    JumpIf( ( (bu[ script + 0x0013 ] >> 0x06) & 1 == 0x00000001 ) == false )To( 0x0314 ); // 05 c5 9e 7d 01 00 20 7f 02 2e 00
0x02e6    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x02ee    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0314 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x02f9    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x0314 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x0304    0x2e(); // 2e
0x0305    Set800c9df1( 0xff ); // 27 00 ff
0x0308    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0314 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x0313    [80073998] = w(w[80073998] & fffbffff); // aa
0x0314    JumpIf( ( bu[ script + 0x0011 ] == 0x000000ff ) == false )To( 0x032e ); // 05 d5 11 7d ff 00 20 7f 02 0f 00
0x031f    GetRotationBy( ( 0x000000a0 - w[8007ae2c] ), ( 0x00000070 - w[8007ae30] ) ); // 05 7a 0c 7d a0 00 15 7a 0d 7d 70 00 15 66 7f
0x032e    Set8007ae2cAnd8007ae30WithScreenXYForEntity( 0xfa ); // a9 00 fa
0x0331    0xec( 0x07, 0x10, bu[ script + 0x0011 ], 0x00, 0x00, 0x00 ); // ec 04 07 10 d5 11 7f 00 00 00
0x033b    JumpIf( ( bu[ 0x8007aef0 + 0x000d ] < 0x00000009 ) == false )To( 0x034e ); // 05 d4 0d 7d 09 00 18 7f 02 08 00
0x0346    [ 0x8007aef0 + 0x000d ] = b( 0x00000002 ); // 05 d4 0d 7d 02 00 2c 7f
0x034e    CallDynamic8006794c_1c_83c( 0xd080, 0x0283, 0x000000, 0x80, 0x00 ); // c8 00 80 d0 83 02 00 00 00 80 00
0x0359    CallDynamic8006794c_1c_83c( 0xd381, 0x0283, 0x000000, 0x80, 0x00 ); // c8 00 81 d3 83 02 00 00 00 80 00
0x0364    CallDynamic8006794c_1c_83c( 0xd381, 0x0283, 0x000000, 0x96, 0x7d ); // c8 00 81 d3 83 02 00 00 00 96 7d
0x036f    Return(); // 04

SCRIPT: script_id = 0x0a
script = w[8007aecc];
0x0370    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0x7f ); // 05 c5 9f 7d 00 00 2c 7f
0x0378    RunScriptAsync( priority = 0x00, entity_id = 0xfa, script_id = 0x0b ); // 10 00 00 fa 0b
0x037d    JumpIf( ( (bu[ script + 0x0013 ] >> 0x03) & 1 == 0x00000001 ) == false )To( 0x038b ); // 05 c5 9b 7d 01 00 20 7f 02 03 00
0x0388    Set8007bc14to0x2cIfValueEqual8007bc10( 0x01 ); // d7 00 01
0x038b    CallFuncc0df4( 0x00ff, 0x00b3, 0x01, 0x08 ); // 6f 00 ff 00 b3 00 01 08
0x0393    CallFuncafac0( 0x01, 0x82, 0x002a, 0x0000, 0x0000 ); // b3 00 01 82 2a 00 00 00 00 00
0x039d    CallFuncafac0( 0x01, 0x87, 0xfff4, 0xfe43, 0x00b4 ); // b3 00 01 87 f4 ff 43 fe b4 00
0x03a7    CallFuncafac0( 0x01, 0x8c, 0x0000, 0x0000, 0x0000 ); // b3 00 01 8c 00 00 00 00 00 00
0x03b1    CallFuncafac0( 0x01, 0x91, 0x03a8, 0x0000, 0x0000 ); // b3 00 01 91 a8 03 00 00 00 00
0x03bb    CallFuncafac0( 0x01, 0x9b, 0x0080, 0x0000, 0x0000 ); // b3 00 01 9b 80 00 00 00 00 00
0x03c5    CallFuncafac0( 0x01, 0xa0, 0x0010, 0x0000, 0x0000 ); // b3 00 01 a0 10 00 00 00 00 00
0x03cf    CallFuncafac0( 0x01, 0xaa, 0x0000, 0x0000, 0x0000 ); // b3 00 01 aa 00 00 00 00 00 00
0x03d9    CallFuncafac0( 0x01, 0x9c, 0x0001, 0x0000, 0x0000 ); // b3 00 01 9c 01 00 00 00 00 00
0x03e3    CallFuncc142c( 0x11, 0x00 ); // 5b 00 11 00
0x03e7    JumpIf( ( (bu[ script + 0x0013 ] >> 0x06) & 1 == 0x00000000 ) == false )To( 0x03f8 ); // 05 c5 9e 7d 00 00 20 7f 02 06 00
0x03f2    Set800c9df1( 0x7f ); // 27 00 7f
0x03f5    JumpTo( 0x03fb ); // 01 03 00
0x03f8    Set800c9df1( 0xff ); // 27 00 ff
0x03fb    Wait( 0x02 ); // 22 00 02
0x03fe    Wait( 0x02 ); // 22 00 02
0x0401    JumpIf( ( bu[ 0x8007aef0 + 0x000d ] == 0x00000009 ) == false )To( 0x0423 ); // 05 d4 0d 7d 09 00 20 7f 02 17 00
0x040c    Set8007bba8( 0x02, 0x0000 ); // 66 00 02 00 00
0x0411    0x20Async( 0x06, 0x00, 0x0003 ); // 20 00 06 00 03 00
0x0417    0x8e(); // 8e
0x0418    0x54( 0x06 ); // 54 00 06
0x041b    [ 0x8007aef0 + 0x000d ] = b( 0x00000000 ); // 05 d4 0d 7d 00 00 2c 7f
0x0423    JumpIf( ( bu[ 0x8007aef0 + 0x000e ] == 0x00000009 ) == false )To( 0x0445 ); // 05 d4 0e 7d 09 00 20 7f 02 17 00
0x042e    Set8007bba8( 0x02, 0x0001 ); // 66 00 02 01 00
0x0433    0x20Async( 0x06, 0x00, 0x0003 ); // 20 00 06 00 03 00
0x0439    0x8e(); // 8e
0x043a    0x54( 0x06 ); // 54 00 06
0x043d    [ 0x8007aef0 + 0x000e ] = b( 0x00000000 ); // 05 d4 0e 7d 00 00 2c 7f
0x0445    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x80 ); // 05 c5 9f 7d 01 00 2c 7f
0x044d    JumpIf( ( (bu[ script + 0x0013 ] >> 0x06) & 1 == 0x00000001 ) == false )To( 0x0486 ); // 05 c5 9e 7d 01 00 20 7f 02 2e 00
0x0458    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x0460    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0486 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x046b    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x0486 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x0476    0x2e(); // 2e
0x0477    Set800c9df1( 0xff ); // 27 00 ff
0x047a    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0486 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x0485    [80073998] = w(w[80073998] & fffbffff); // aa
0x0486    Return(); // 04




ENTITY: entity_id = 0x01
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0492    CallFuncafac0( 0x00, 0x82, 0x002b, 0x0000, 0x0000 ); // b3 00 00 82 2b 00 00 00 00 00
0x049c    CallFuncafac0( 0x00, 0x96, 0x11, 0x000c, 0x0000 ); // da 00 00 96 11 0c 00 00 00
0x04a5    CallFuncafac0( 0x00, 0x8c, 0x0000, 0x0000, 0x0000 ); // b3 00 00 8c 00 00 00 00 00 00
0x04af    CallFuncafac0( 0x00, 0x91, 0x05d7, 0x0000, 0x0000 ); // b3 00 00 91 d7 05 00 00 00 00
0x04b9    CallFuncafac0( 0x00, 0x9b, 0x00ff, 0x0000, 0x0000 ); // b3 00 00 9b ff 00 00 00 00 00
0x04c3    CallFuncafac0( 0x00, 0xa0, 0x0010, 0x0000, 0x0000 ); // b3 00 00 a0 10 00 00 00 00 00
0x04cd    CallFuncafac0( 0x00, 0xaa, 0x0000, 0x0000, 0x0000 ); // b3 00 00 aa 00 00 00 00 00 00
0x04d7    CallFuncafac0( 0x00, 0x9c, 0x0001, 0x0000, 0x0000 ); // b3 00 00 9c 01 00 00 00 00 00
0x04e1    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x04e2    JumpSwitch( ( GetYRotationFromEntity( 0xfa ) >> 0x00000005 ) )( case 0x0000: jump_to:0x0501)( case 0x0001: jump_to:0x050e)( case 0x0002: jump_to:0x051b)( case 0x0003: jump_to:0x0528)( case 0x0004: jump_to:0x0535)( case 0x0005: jump_to:0x0542)( case 0x0006: jump_to:0x054f)( case 0x0007: jump_to:0x055c)( default: jump_to:0x0569); // 05 78 fa 03 7d 05 00 17 7f 0b 08 00 00 7d 00 15 00 22 00 2f 00 3c 00 49 00 56 00 63 00 70 00
0x0501    CallFuncafac0( 0x00, 0xa5, 0x001e, 0xffe2, 0x0000 ); // b3 00 00 a5 1e 00 e2 ff 00 00
0x050b    JumpTo( 0x0569 ); // 01 5b 00
0x050e    CallFuncafac0( 0x00, 0xa5, 0x0019, 0xffe2, 0xffd3 ); // b3 00 00 a5 19 00 e2 ff d3 ff
0x0518    JumpTo( 0x0569 ); // 01 4e 00
0x051b    CallFuncafac0( 0x00, 0xa5, 0xffec, 0xffe2, 0xffe2 ); // b3 00 00 a5 ec ff e2 ff e2 ff
0x0525    JumpTo( 0x0569 ); // 01 41 00
0x0528    CallFuncafac0( 0x00, 0xa5, 0xffe2, 0xffe2, 0x0000 ); // b3 00 00 a5 e2 ff e2 ff 00 00
0x0532    JumpTo( 0x0569 ); // 01 34 00
0x0535    CallFuncafac0( 0x00, 0xa5, 0xffe2, 0xffe2, 0x0000 ); // b3 00 00 a5 e2 ff e2 ff 00 00
0x053f    JumpTo( 0x0569 ); // 01 27 00
0x0542    CallFuncafac0( 0x00, 0xa5, 0x0000, 0xffe2, 0x0023 ); // b3 00 00 a5 00 00 e2 ff 23 00
0x054c    JumpTo( 0x0569 ); // 01 1a 00
0x054f    CallFuncafac0( 0x00, 0xa5, 0x0014, 0xffe2, 0x001e ); // b3 00 00 a5 14 00 e2 ff 1e 00
0x0559    JumpTo( 0x0569 ); // 01 0d 00
0x055c    CallFuncafac0( 0x00, 0xa5, 0x0019, 0xffe2, 0x0014 ); // b3 00 00 a5 19 00 e2 ff 14 00
0x0566    JumpTo( 0x0569 ); // 01 00 00
0x0569    Wait( 0x01 ); // 22 00 01
0x056c    JumpTo( 0x04e2 ); // 01 73 ff




ENTITY: entity_id = 0x02
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x057a    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x057b    JumpIf( bu[ script + 0x001e ] == false )To( 0x063b ); // 05 d5 1e 7f 02 b9 00
0x0582    CallFuncc1368( 0x10, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 10 d6 00 7f d6 00 7f d6 00 7f
0x058e    CallFuncc1368( 0x1a, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 1a d6 00 7f d6 00 7f d6 00 7f
0x059a    Wait( 0x01 ); // 22 00 01
0x059d    CallFuncc1368( 0x10, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 10 d6 00 7f d6 00 7f d6 00 7f
0x05a9    CallFuncc1368( 0x1a, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 1a d6 00 7f d6 00 7f d6 00 7f
0x05b5    CallFuncc142c( 0x10, 0x01 ); // 5b 00 10 01
0x05b9    CallFuncc142c( 0x1a, 0x01 ); // 5b 00 1a 01
0x05bd    [ w[ 0x8007bcf8 ] + 0x0000 ] = b( 0x00000000 ); // 05 d6 00 7d 00 00 2c 7f
0x05c5    JumpTo( 0x05eb ); // 01 23 00
0x05c8    CallFuncc1368( 0x10, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 10 d6 00 7f d6 00 7f d6 00 7f
0x05d4    CallFuncc1368( 0x1a, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 1a d6 00 7f d6 00 7f d6 00 7f
0x05e0    Wait( 0x01 ); // 22 00 01
0x05e3    ( bu[ w[ 0x8007bcf8 ] + 0x0000 ] += 0x00000002 ); // 05 d6 00 7d 02 00 32 7f
0x05eb    JumpIf( ( bu[ w[ 0x8007bcf8 ] + 0x0000 ] < 0x000000a4 ) == true )To( 0x05c8 ); // 05 d6 00 7d a4 00 18 7f 03 d2 ff
0x05f6    JumpTo( 0x0633 ); // 01 3a 00
0x05f9    [ w[ 0x8007bcf8 ] + 0x0001 ] = b( ( 0x00000001 + bu[ w[ 0x8007bcf8 ] + 0x0001 ] ) ); // 05 d6 01 d6 01 7d 01 00 14 2c 7f
0x0604    [ w[ 0x8007bcf8 ] + 0x0000 ] = b( ( 0x000000a4 + ( 0x00000168 / GetSinByRotation( ( bu[ w[ 0x8007bcf8 ] + 0x0001 ] << 0x00000002 ) ) ) ) ); // 05 d6 00 d6 01 7d 02 00 16 62 7d 68 01 12 7d a4 00 14 2c 7f
0x0618    CallFuncc1368( 0x10, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 10 d6 00 7f d6 00 7f d6 00 7f
0x0624    CallFuncc1368( 0x1a, bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ], bu[ w[ 0x8007bcf8 ] + 0x0000 ] ); // 59 0e 1a d6 00 7f d6 00 7f d6 00 7f
0x0630    Wait( 0x01 ); // 22 00 01
0x0633    JumpIf( 0x00000001 == true )To( 0x05f9 ); // 05 7d 01 00 7f 03 be ff
0x063b    Wait( 0x01 ); // 22 00 01
0x063e    JumpTo( 0x057b ); // 01 3a ff




ENTITY: entity_id = 0x03
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x064e    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x064f    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0xbf ); // 05 c5 e6 7d 00 00 2c 7f
0x0657    JumpSwitch( bu[ script + 0x0018 ] )( case 0x0000: jump_to:0x0681)( case 0x0001: jump_to:0x069f)( case 0x0002: jump_to:0x06bd)( case 0x0003: jump_to:0x06db)( case 0x0004: jump_to:0x06f9)( case 0x0005: jump_to:0x0717)( case 0x0006: jump_to:0x0735)( case 0x0007: jump_to:0x0753)( case 0x0008: jump_to:0x0771)( case 0x0009: jump_to:0x078f)( case 0x000a: jump_to:0x07ad)( case 0x000b: jump_to:0x07cb)( case 0x000c: jump_to:0x07e9)( case 0x000d: jump_to:0x0807)( case 0x000e: jump_to:0x0825)( case 0x000f: jump_to:0x0843)( default: jump_to:0x0861); // 05 d5 18 7f 0b 10 00 00 05 02 25 00 43 00 61 00 7f 00 9d 00 bb 00 d9 00 f7 00 15 01 33 01 51 01 6f 01 8d 01 ab 01 c9 01 e7 01
0x0681    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x069c ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x068c    [ script + 0x0018 ] = b( 0x00000001 ); // 05 d5 18 7d 01 00 2c 7f
0x0694    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x069c    JumpTo( 0x0861 ); // 01 c2 01
0x069f    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x06ba ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x06aa    [ script + 0x0018 ] = b( 0x00000002 ); // 05 d5 18 7d 02 00 2c 7f
0x06b2    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x06ba    JumpTo( 0x0861 ); // 01 a4 01
0x06bd    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x06d8 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x06c8    [ script + 0x0018 ] = b( 0x00000003 ); // 05 d5 18 7d 03 00 2c 7f
0x06d0    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x06d8    JumpTo( 0x0861 ); // 01 86 01
0x06db    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x06f6 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x06e6    [ script + 0x0018 ] = b( 0x00000004 ); // 05 d5 18 7d 04 00 2c 7f
0x06ee    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x06f6    JumpTo( 0x0861 ); // 01 68 01
0x06f9    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0714 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x0704    [ script + 0x0018 ] = b( 0x00000005 ); // 05 d5 18 7d 05 00 2c 7f
0x070c    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0714    JumpTo( 0x0861 ); // 01 4a 01
0x0717    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0732 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x0722    [ script + 0x0018 ] = b( 0x00000006 ); // 05 d5 18 7d 06 00 2c 7f
0x072a    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0732    JumpTo( 0x0861 ); // 01 2c 01
0x0735    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0750 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x0740    [ script + 0x0018 ] = b( 0x00000007 ); // 05 d5 18 7d 07 00 2c 7f
0x0748    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0750    JumpTo( 0x0861 ); // 01 0e 01
0x0753    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x076e ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x075e    [ script + 0x0018 ] = b( 0x00000008 ); // 05 d5 18 7d 08 00 2c 7f
0x0766    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x076e    JumpTo( 0x0861 ); // 01 f0 00
0x0771    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x078c ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x077c    [ script + 0x0018 ] = b( 0x00000009 ); // 05 d5 18 7d 09 00 2c 7f
0x0784    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x078c    JumpTo( 0x0861 ); // 01 d2 00
0x078f    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x07aa ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x079a    [ script + 0x0018 ] = b( 0x0000000a ); // 05 d5 18 7d 0a 00 2c 7f
0x07a2    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x07aa    JumpTo( 0x0861 ); // 01 b4 00
0x07ad    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x07c8 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x07b8    [ script + 0x0018 ] = b( 0x0000000b ); // 05 d5 18 7d 0b 00 2c 7f
0x07c0    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x07c8    JumpTo( 0x0861 ); // 01 96 00
0x07cb    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x07e6 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x07d6    [ script + 0x0018 ] = b( 0x0000000c ); // 05 d5 18 7d 0c 00 2c 7f
0x07de    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x07e6    JumpTo( 0x0861 ); // 01 78 00
0x07e9    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0804 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x07f4    [ script + 0x0018 ] = b( 0x0000000d ); // 05 d5 18 7d 0d 00 2c 7f
0x07fc    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0804    JumpTo( 0x0861 ); // 01 5a 00
0x0807    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0822 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x0812    [ script + 0x0018 ] = b( 0x0000000e ); // 05 d5 18 7d 0e 00 2c 7f
0x081a    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0822    JumpTo( 0x0861 ); // 01 3c 00
0x0825    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0840 ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x0830    [ script + 0x0018 ] = b( 0x0000000f ); // 05 d5 18 7d 0f 00 2c 7f
0x0838    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x0840    JumpTo( 0x0861 ); // 01 1e 00
0x0843    JumpIf( ( (bu[ script + 0x001c ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x085e ); // 05 c5 e7 7d 01 00 20 7f 02 10 00
0x084e    [ script + 0x0018 ] = b( 0x00000010 ); // 05 d5 18 7d 10 00 2c 7f
0x0856    [ script + 0x001c ] = b( b[ script + 0x001c ] & 0x7f ); // 05 c5 e7 7d 00 00 2c 7f
0x085e    JumpTo( 0x0861 ); // 01 00 00
0x0861    Wait( 0x01 ); // 22 00 01
0x0864    JumpTo( 0x064f ); // 01 e8 fd




ENTITY: entity_id = 0x04
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0872    SetDataForType3Entity( number = 04, 0x0000, 0x015e, 0x00d2, 0x0078, 0x012c, 0x015e, 0x00d2, 0x028a ); // 29 00 04 00 00 5e 01 d2 00 78 00 2c 01 5e 01 d2 00 8a 02
0x0885    Return(); // 04

SCRIPT: script_id = 0x02
script = w[8007aecc];
0x0886    JumpIf( bu[script + 16ec] == true )To( 0x088e ); // 05 7a 02 7f 03 01 00
0x088d    Return(); // 04
0x088e    [ script + 0x0026 ] = b( 0x00000001 ); // 05 d5 26 7d 01 00 2c 7f
0x0896    JumpIf( ( ( bu[ script + 0x002a ] == 0x00000001 ) && ( bu[script + 16ec] == 0x00000001 ) ) == false )To( 0x08b6 ); // 05 d5 2a 7d 01 00 20 7a 02 7d 01 00 20 27 7f 02 0e 00
0x08a8    [ script + 0x002a ] = b( 0x00000002 ); // 05 d5 2a 7d 02 00 2c 7f
0x08b0    0x20Async( 0x01, 0x10, 0x0026 ); // 20 00 01 10 26 00
0x08b6    JumpIf( ( bu[ script + 0x0018 ] < 0x00000002 ) == false )To( 0x08c4 ); // 05 d5 18 7d 02 00 18 7f 02 03 00
0x08c1    Set8007bbf4( 0x00 ); // 68 00 00
0x08c4    Return(); // 04




ENTITY: entity_id = 0x05
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x08d2    SetDataForType3Entity( number = 04, 0x0000, 0x015e, 0xff2e, 0x0078, 0xfed4, 0x015e, 0xff2e, 0x028a ); // 29 00 04 00 00 5e 01 2e ff 78 00 d4 fe 5e 01 2e ff 8a 02
0x08e5    Return(); // 04

SCRIPT: script_id = 0x02
script = w[8007aecc];
0x08e6    JumpIf( bu[script + 16ec] == true )To( 0x08ee ); // 05 7a 02 7f 03 01 00
0x08ed    Return(); // 04
0x08ee    [ script + 0x0026 ] = b( 0x00000001 ); // 05 d5 26 7d 01 00 2c 7f
0x08f6    JumpIf( ( ( bu[ script + 0x002a ] == 0x00000001 ) && ( bu[script + 16ec] == 0x00000001 ) ) == false )To( 0x0916 ); // 05 d5 2a 7d 01 00 20 7a 02 7d 01 00 20 27 7f 02 0e 00
0x0908    [ script + 0x002a ] = b( 0x00000002 ); // 05 d5 2a 7d 02 00 2c 7f
0x0910    0x20Async( 0x01, 0x10, 0x0026 ); // 20 00 01 10 26 00
0x0916    JumpIf( ( bu[ script + 0x0018 ] < 0x00000002 ) == false )To( 0x0924 ); // 05 d5 18 7d 02 00 18 7f 02 03 00
0x0921    Set8007bbf4( 0x00 ); // 68 00 00
0x0924    Return(); // 04




ENTITY: entity_id = 0x06
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0932    SetDataForType3Entity( number = 03, 0x0000, 0x015e, 0x00d2, 0x028a, 0xff2e, 0x028a ); // 29 00 03 00 00 5e 01 d2 00 8a 02 2e ff 8a 02
0x0941    Return(); // 04

SCRIPT: script_id = 0x02
script = w[8007aecc];
0x0942    JumpIf( bu[script + 16ec] == true )To( 0x094a ); // 05 7a 02 7f 03 01 00
0x0949    Return(); // 04
0x094a    [ script + 0x0026 ] = b( 0x00000001 ); // 05 d5 26 7d 01 00 2c 7f
0x0952    JumpIf( ( ( bu[ script + 0x002a ] == 0x00000001 ) && ( bu[script + 16ec] == 0x00000001 ) ) == false )To( 0x0972 ); // 05 d5 2a 7d 01 00 20 7a 02 7d 01 00 20 27 7f 02 0e 00
0x0964    [ script + 0x002a ] = b( 0x00000002 ); // 05 d5 2a 7d 02 00 2c 7f
0x096c    0x20Async( 0x01, 0x10, 0x0026 ); // 20 00 01 10 26 00
0x0972    JumpIf( ( bu[ script + 0x0018 ] < 0x00000002 ) == false )To( 0x0980 ); // 05 d5 18 7d 02 00 18 7f 02 03 00
0x097d    Set8007bbf4( 0x00 ); // 68 00 00
0x0980    Return(); // 04




ENTITY: entity_id = 0x07
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x098e    SetDataForType3Entity( number = 03, 0x0000, 0x015e, 0xff2e, 0x0078, 0x00d2, 0x0078 ); // 29 00 03 00 00 5e 01 2e ff 78 00 d2 00 78 00
0x099d    Return(); // 04

SCRIPT: script_id = 0x02
script = w[8007aecc];
0x099e    JumpIf( bu[script + 16ec] == true )To( 0x09a6 ); // 05 7a 02 7f 03 01 00
0x09a5    Return(); // 04
0x09a6    [ script + 0x0026 ] = b( 0x00000001 ); // 05 d5 26 7d 01 00 2c 7f
0x09ae    JumpIf( ( ( bu[ script + 0x002a ] == 0x00000001 ) && ( bu[script + 16ec] == 0x00000001 ) ) == false )To( 0x09ce ); // 05 d5 2a 7d 01 00 20 7a 02 7d 01 00 20 27 7f 02 0e 00
0x09c0    [ script + 0x002a ] = b( 0x00000002 ); // 05 d5 2a 7d 02 00 2c 7f
0x09c8    0x20Async( 0x01, 0x10, 0x0026 ); // 20 00 01 10 26 00
0x09ce    JumpIf( ( bu[ script + 0x0018 ] < 0x00000002 ) == false )To( 0x09dc ); // 05 d5 18 7d 02 00 18 7f 02 03 00
0x09d9    Set8007bbf4( 0x00 ); // 68 00 00
0x09dc    Return(); // 04




ENTITY: entity_id = 0x08
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x09ea    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x09eb    JumpIf( ( ( ( bu[script + 16ec] == 0x00000001 ) && ( (bu[ 0x8007aef0 + 0x0000 ] >> 0x07) & 1 == 0x00000000 ) ) && ( (bu[ script + 0x0012 ] >> 0x01) & 1 == 0x00000000 ) ) == false )To( 0x0af7 ); // 05 7a 02 7d 01 00 20 e4 07 1c 7d 00 00 20 27 c5 91 7d 00 00 20 27 7f 02 f2 00
0x0a05    [ w[ 0x8007bcf8 ] + 0x0000 ] = b3( ( 0x00000010 / ( ( ( 0x00000008 / ( 0x000006a4 - GetZPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x000006a4 - GetZPositionFromEntity( 0xfa ) ) ) ) + ( ( 0x00000008 / ( 0x00000258 - GetXPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x00000258 - GetXPositionFromEntity( 0xfa ) ) ) ) ) ) ); // 05 ca 00 78 fa 00 7d 58 02 15 7d 08 00 12 78 fa 00 7d 58 02 15 7d 08 00 12 11 78 fa 02 7d a4 06 15 7d 08 00 12 78 fa 02 7d a4 06 15 7d 08 00 12 11 14 7d 10 00 12 2c 7f
0x0a3d    JumpIf( ( ( b3[ w[ 0x8007bcf8 ] + 0x0000 ] < 0x00000037 ) && ( ( GetYPositionFromEntity( 0xfa ) > 0x0000feca ) && ( GetYPositionFromEntity( 0xfa ) < 0x00000122 ) ) ) == false )To( 0x0af7 ); // 05 ca 00 7d 37 00 18 78 fa 01 7d ca fe 19 78 fa 01 7d 22 01 18 27 27 7f 02 9f 00
0x0a58    Set8007bbf4( 0x01 ); // 68 00 01
0x0a5b    JumpIf( IsButtonPressed( 0x000a0000 ) == false )To( 0x0af7 ); // 05 7e 00 00 0a 00 4f 7f 02 91 00
0x0a66    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0xbf ); // 05 c5 9e 7d 00 00 2c 7f
0x0a6e    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0a8c ); // 05 c5 9f 7d 01 00 20 7f 02 13 00
0x0a79    0x2d(); // 2d
0x0a7a    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0a89 ); // 05 c5 90 7d 00 00 20 7f 02 04 00
0x0a85    [80073998] = w(w[80073998] | 00040000); // ab
0x0a86    JumpTo( 0x0a8c ); // 01 03 00
0x0a89    Wait( 0x01 ); // 22 00 01
0x0a8c    Set800c9df1( 0x7f ); // 27 00 7f
0x0a8f    [ 0x8007aef0 + 0x00dc ] = h( 0x00000258 ); // 05 d8 dc 7d 58 02 2c 7f
0x0a97    [ 0x8007aef0 + 0x00de ] = h( 0x000006a4 ); // 05 d8 de 7d a4 06 2c 7f
0x0a9f    [ 0x8007aef0 + 0x00e2 ] = b( (bu[ 0x8007aef0 + 0x0000 ] >> 0x07) & 1 ); // 05 d4 e2 e4 07 1c 2c 7f
0x0aa7    [ 0x8007aef0 + 0x00e0 ] = h( 0x000000ec ); // 05 d8 e0 7d ec 00 2c 7f
0x0aaf    Set8007bba8( 0x00, 0x00ec ); // 66 00 00 ec 00
0x0ab4    RunScriptStartSync( priority = 0x02, entity_id = 0xfa, script_id = 0x0c ); // 14 00 02 fa 0c
0x0ab9    JumpIf( 0x00000001 == false )To( 0x0ac9 ); // 05 7d 01 00 7f 02 08 00
0x0ac1    [ 0x8007aef0 + 0x0000 ] = b( b[ 0x8007aef0 + 0x0000 ] | 0x80 ); // 05 e4 07 1c d4 e2 2c 7f
0x0ac9    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x0ad1    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0af7 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x0adc    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x0af7 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x0ae7    0x2e(); // 2e
0x0ae8    Set800c9df1( 0xff ); // 27 00 ff
0x0aeb    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0af7 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x0af6    [80073998] = w(w[80073998] & fffbffff); // aa
0x0af7    Wait( 0x01 ); // 22 00 01
0x0afa    JumpTo( 0x09eb ); // 01 ee fe




ENTITY: entity_id = 0x09
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0b0a    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x0b0b    JumpIf( ( ( ( bu[script + 16ec] == 0x00000001 ) && ( (bu[ 0x8007aef0 + 0x0000 ] >> 0x06) & 1 == 0x00000000 ) ) && ( (bu[ script + 0x0012 ] >> 0x01) & 1 == 0x00000000 ) ) == false )To( 0x0c17 ); // 05 7a 02 7d 01 00 20 e4 06 1c 7d 00 00 20 27 c5 91 7d 00 00 20 27 7f 02 f2 00
0x0b25    [ w[ 0x8007bcf8 ] + 0x0000 ] = b3( ( 0x00000010 / ( ( ( 0x00000008 / ( 0x00000640 - GetZPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x00000640 - GetZPositionFromEntity( 0xfa ) ) ) ) + ( ( 0x00000008 / ( 0x0000fd44 - GetXPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x0000fd44 - GetXPositionFromEntity( 0xfa ) ) ) ) ) ) ); // 05 ca 00 78 fa 00 7d 44 fd 15 7d 08 00 12 78 fa 00 7d 44 fd 15 7d 08 00 12 11 78 fa 02 7d 40 06 15 7d 08 00 12 78 fa 02 7d 40 06 15 7d 08 00 12 11 14 7d 10 00 12 2c 7f
0x0b5d    JumpIf( ( ( b3[ w[ 0x8007bcf8 ] + 0x0000 ] < 0x00000037 ) && ( ( GetYPositionFromEntity( 0xfa ) > 0x0000feca ) && ( GetYPositionFromEntity( 0xfa ) < 0x00000122 ) ) ) == false )To( 0x0c17 ); // 05 ca 00 7d 37 00 18 78 fa 01 7d ca fe 19 78 fa 01 7d 22 01 18 27 27 7f 02 9f 00
0x0b78    Set8007bbf4( 0x01 ); // 68 00 01
0x0b7b    JumpIf( IsButtonPressed( 0x000a0000 ) == false )To( 0x0c17 ); // 05 7e 00 00 0a 00 4f 7f 02 91 00
0x0b86    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0xbf ); // 05 c5 9e 7d 00 00 2c 7f
0x0b8e    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0bac ); // 05 c5 9f 7d 01 00 20 7f 02 13 00
0x0b99    0x2d(); // 2d
0x0b9a    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0ba9 ); // 05 c5 90 7d 00 00 20 7f 02 04 00
0x0ba5    [80073998] = w(w[80073998] | 00040000); // ab
0x0ba6    JumpTo( 0x0bac ); // 01 03 00
0x0ba9    Wait( 0x01 ); // 22 00 01
0x0bac    Set800c9df1( 0x7f ); // 27 00 7f
0x0baf    [ 0x8007aef0 + 0x00dc ] = h( 0x0000fd44 ); // 05 d8 dc 7d 44 fd 2c 7f
0x0bb7    [ 0x8007aef0 + 0x00de ] = h( 0x00000640 ); // 05 d8 de 7d 40 06 2c 7f
0x0bbf    [ 0x8007aef0 + 0x00e2 ] = b( (bu[ 0x8007aef0 + 0x0000 ] >> 0x06) & 1 ); // 05 d4 e2 e4 06 1c 2c 7f
0x0bc7    [ 0x8007aef0 + 0x00e0 ] = h( 0x00000417 ); // 05 d8 e0 7d 17 04 2c 7f
0x0bcf    Set8007bba8( 0x00, 0x0417 ); // 66 00 00 17 04
0x0bd4    RunScriptStartSync( priority = 0x02, entity_id = 0xfa, script_id = 0x0c ); // 14 00 02 fa 0c
0x0bd9    JumpIf( 0x00000001 == false )To( 0x0be9 ); // 05 7d 01 00 7f 02 08 00
0x0be1    [ 0x8007aef0 + 0x0000 ] = b( b[ 0x8007aef0 + 0x0000 ] | 0x40 ); // 05 e4 06 1c d4 e2 2c 7f
0x0be9    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x0bf1    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0c17 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x0bfc    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x0c17 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x0c07    0x2e(); // 2e
0x0c08    Set800c9df1( 0xff ); // 27 00 ff
0x0c0b    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0c17 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x0c16    [80073998] = w(w[80073998] & fffbffff); // aa
0x0c17    Wait( 0x01 ); // 22 00 01
0x0c1a    JumpTo( 0x0b0b ); // 01 ee fe




ENTITY: entity_id = 0x0a
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0c2a    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x0c2b    JumpIf( ( ( ( bu[script + 16ec] == 0x00000001 ) && ( bu[ w[ 0x8007bcf8 ] + 0x0003 ] == 0x00000000 ) ) && ( (bu[ script + 0x0012 ] >> 0x01) & 1 == 0x00000000 ) ) == false )To( 0x0d34 ); // 05 7a 02 7d 01 00 20 d6 03 7d 00 00 20 27 c5 91 7d 00 00 20 27 7f 02 f0 00
0x0c44    [ w[ 0x8007bcf8 ] + 0x0000 ] = b3( ( 0x00000010 / ( ( ( 0x00000008 / ( 0x00000427 - GetZPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x00000427 - GetZPositionFromEntity( 0xfa ) ) ) ) + ( ( 0x00000008 / ( 0x000002b8 - GetXPositionFromEntity( 0xfa ) ) ) * ( 0x00000008 / ( 0x000002b8 - GetXPositionFromEntity( 0xfa ) ) ) ) ) ) ); // 05 ca 00 78 fa 00 7d b8 02 15 7d 08 00 12 78 fa 00 7d b8 02 15 7d 08 00 12 11 78 fa 02 7d 27 04 15 7d 08 00 12 78 fa 02 7d 27 04 15 7d 08 00 12 11 14 7d 10 00 12 2c 7f
0x0c7c    JumpIf( ( ( b3[ w[ 0x8007bcf8 ] + 0x0000 ] < 0x00000028 ) && ( ( GetYPositionFromEntity( 0xfa ) > 0x0000feb6 ) && ( GetYPositionFromEntity( 0xfa ) < 0x0000010e ) ) ) == false )To( 0x0d34 ); // 05 ca 00 7d 28 00 18 78 fa 01 7d b6 fe 19 78 fa 01 7d 0e 01 18 27 27 7f 02 9d 00
0x0c97    Set8007bbf4( 0x01 ); // 68 00 01
0x0c9a    JumpIf( IsButtonPressed( 0x000a0000 ) == false )To( 0x0d34 ); // 05 7e 00 00 0a 00 4f 7f 02 8f 00
0x0ca5    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0xbf ); // 05 c5 9e 7d 00 00 2c 7f
0x0cad    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0ccb ); // 05 c5 9f 7d 01 00 20 7f 02 13 00
0x0cb8    0x2d(); // 2d
0x0cb9    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0cc8 ); // 05 c5 90 7d 00 00 20 7f 02 04 00
0x0cc4    [80073998] = w(w[80073998] | 00040000); // ab
0x0cc5    JumpTo( 0x0ccb ); // 01 03 00
0x0cc8    Wait( 0x01 ); // 22 00 01
0x0ccb    Set800c9df1( 0x7f ); // 27 00 7f
0x0cce    [ 0x8007aef0 + 0x00dc ] = h( 0x000002b8 ); // 05 d8 dc 7d b8 02 2c 7f
0x0cd6    [ 0x8007aef0 + 0x00de ] = h( 0x00000427 ); // 05 d8 de 7d 27 04 2c 7f
0x0cde    [ 0x8007aef0 + 0x00e2 ] = b( bu[ w[ 0x8007bcf8 ] + 0x0003 ] ); // 05 d4 e2 d6 03 2c 7f
0x0ce5    [ 0x8007aef0 + 0x00e0 ] = h( 0x0000752f ); // 05 d8 e0 7d 2f 75 2c 7f
0x0ced    Set8007bba8( 0x00, 0x752f ); // 66 00 00 2f 75
0x0cf2    RunScriptStartSync( priority = 0x02, entity_id = 0xfa, script_id = 0x0d ); // 14 00 02 fa 0d
0x0cf7    JumpIf( 0x00000000 == false )To( 0x0d06 ); // 05 7d 00 00 7f 02 07 00
0x0cff    [ w[ 0x8007bcf8 ] + 0x0003 ] = b( bu[ 0x8007aef0 + 0x00e2 ] ); // 05 d6 03 d4 e2 2c 7f
0x0d06    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x0d0e    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x0d34 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x0d19    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x0d34 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x0d24    0x2e(); // 2e
0x0d25    Set800c9df1( 0xff ); // 27 00 ff
0x0d28    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x0d34 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x0d33    [80073998] = w(w[80073998] & fffbffff); // aa
0x0d34    Wait( 0x01 ); // 22 00 01
0x0d37    JumpTo( 0x0c2b ); // 01 f1 fe




ENTITY: entity_id = 0x0b
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0d46    [ script + 0x0022 ] = h( 0x00000020 ); // 05 dd 22 7d 20 00 2c 7f
0x0d4e    [ script + 0x0024 ] = h( 0x00000040 ); // 05 dd 24 7d 40 00 2c 7f
0x0d56    CallFuncc142c( 0x10, 0x00 ); // 5b 00 10 00
0x0d5a    CallFuncc142c( 0x1a, 0x00 ); // 5b 00 1a 00
0x0d5e    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x0d5f    CallFuncc1368( 0x05, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 05 dd 22 7f dd 22 7f dd 22 7f
0x0d6b    CallFuncc1368( 0x0a, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0a dd 22 7f dd 22 7f dd 22 7f
0x0d77    CallFuncc1368( 0x0b, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0b dd 22 7f dd 22 7f dd 22 7f
0x0d83    CallFuncc1368( 0x0c, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0c dd 22 7f dd 22 7f dd 22 7f
0x0d8f    CallFuncc1368( 0x0d, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0d dd 22 7f dd 22 7f dd 22 7f
0x0d9b    CallFuncc1368( 0x0e, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0e dd 22 7f dd 22 7f dd 22 7f
0x0da7    CallFuncc1368( 0x0f, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 0f dd 22 7f dd 22 7f dd 22 7f
0x0db3    CallFuncc1368( 0x12, hu[ script + 0x0022 ], hu[ script + 0x0022 ], hu[ script + 0x0022 ] ); // 59 0e 12 dd 22 7f dd 22 7f dd 22 7f
0x0dbf    JumpIf( ( hu[ script + 0x0024 ] > 0x00000080 ) == false )To( 0x0dd2 ); // 05 dd 24 7d 80 00 19 7f 02 08 00
0x0dca    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x00000000 ); // 05 de 00 7d 00 00 2c 7f
0x0dd2    CallFuncc1368( 0x11, ( hu[ w[ 0x8007bcf8 ] + 0x0000 ] + hu[ script + 0x0024 ] ), ( hu[ w[ 0x8007bcf8 ] + 0x0000 ] + hu[ script + 0x0024 ] ), ( hu[ w[ 0x8007bcf8 ] + 0x0000 ] + hu[ script + 0x0024 ] ) ); // 59 0e 11 dd 24 de 00 14 7f dd 24 de 00 14 7f dd 24 de 00 14 7f
0x0de7    JumpIf( ( hu[ script + 0x0024 ] == 0x00000080 ) == false )To( 0x0e54 ); // 05 dd 24 7d 80 00 20 7f 02 62 00
0x0df2    JumpSwitch( hu[ w[ 0x8007bcf8 ] + 0x0000 ] )( case 0000: jump_to:0x0e12)( case 0006: jump_to:0x0e1d)( case 000c: jump_to:0x0e28)( case 000f: jump_to:0x0e33)( case 000b: jump_to:0x0e3e)( case 0005: jump_to:0x0e49)( default: jump_to:0x0e54); // 05 de 00 7f 06 06 5a 00 00 00 18 00 06 00 23 00 0c 00 2e 00 0f 00 39 00 0b 00 44 00 05 00 4f 00
0x0e12    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x00000006 ); // 05 de 00 7d 06 00 2c 7f
0x0e1a    JumpTo( 0x0e54 ); // 01 37 00
0x0e1d    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x0000000c ); // 05 de 00 7d 0c 00 2c 7f
0x0e25    JumpTo( 0x0e54 ); // 01 2c 00
0x0e28    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x0000000f ); // 05 de 00 7d 0f 00 2c 7f
0x0e30    JumpTo( 0x0e54 ); // 01 21 00
0x0e33    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x0000000b ); // 05 de 00 7d 0b 00 2c 7f
0x0e3b    JumpTo( 0x0e54 ); // 01 16 00
0x0e3e    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x00000005 ); // 05 de 00 7d 05 00 2c 7f
0x0e46    JumpTo( 0x0e54 ); // 01 0b 00
0x0e49    [ w[ 0x8007bcf8 ] + 0x0000 ] = h( 0x00000000 ); // 05 de 00 7d 00 00 2c 7f
0x0e51    JumpTo( 0x0e54 ); // 01 00 00
0x0e54    Wait( 0x01 ); // 22 00 01
0x0e57    JumpTo( 0x0d5f ); // 01 05 ff




ENTITY: entity_id = 0x0c
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0e66    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x0e67    JumpIf( ( ( bu[ script + 0x0026 ] == 0x00000000 ) && ( bu[ script + 0x002a ] == 0x00000002 ) ) == false )To( 0x0e84 ); // 05 d5 26 7d 00 00 20 d5 2a 7d 02 00 20 27 7f 02 0b 00
0x0e79    [ script + 0x002a ] = b( 0x00000000 ); // 05 d5 2a 7d 00 00 2c 7f
0x0e81    0x21( 0x01 ); // 21 00 01
0x0e84    JumpIf( ( bu[ script + 0x0018 ] == 0x00000001 ) == false )To( 0x0ec6 ); // 05 d5 18 7d 01 00 20 7f 02 37 00
0x0e8f    JumpIf( ( h[ script + 0x0028 ] < 0x0000012c ) == false )To( 0x0e9f ); // 05 d9 28 7d 2c 01 18 7f 02 05 00
0x0e9a    ( h[ script + 0x0028 ]++ ); // 05 d9 28 04 7f
0x0e9f    JumpIf( ( ( ( h[ script + 0x0028 ] == 0x0000012c ) && ( bu[ script + 0x002a ] == 0x00000000 ) ) && ( bu[script + 16ec] == 0x00000001 ) ) == false )To( 0x0ec6 ); // 05 d9 28 7d 2c 01 20 d5 2a 7d 00 00 20 27 7a 02 7d 01 00 20 27 7f 02 0e 00
0x0eb8    [ script + 0x002a ] = b( 0x00000001 ); // 05 d5 2a 7d 01 00 2c 7f
0x0ec0    0x20Async( 0x01, 0x10, 0x0025 ); // 20 00 01 10 25 00
0x0ec6    Wait( 0x01 ); // 22 00 01
0x0ec9    JumpTo( 0x0e67 ); // 01 9b ff





Description is as follows
Code: [Select]
+00 [][]     X
+02 [][]     Y
+04 [][]     Z
+06 [][]     direction

+11 []       init with 0xff. Set 0xc0 in entity 0xf script 0x1. Related with 80077c82.

+18 []       scene progress.
                0x00 - initial value.
                0x01
                0x02
                0x03
                0x04
                0x05 - blank, cina and marcus run into room.
                0x06
                0x07
                0x08
                0x09
                0x0a - baku dragon enter the room.
                0x0b
                0x0c
                0x0d
                0x0e
+1a []       some timer. Do various things when it greater than 0.

+1c []       some flag progress.
                0x40 - remove this flag every progress cycle. This flag used to wait all entities until progress updates.
                0x80 - if this flag is set we advance +18 from 00 to 01 and remove this flag.


entity_id = 0x00 - script - init entity.
    script_id = 0x00
        init script. Start all others entity and set up initial variable values.
        ???
    script_id = 0x0a
        ???

entity_id = 0x01 - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x02 - script - ???
    script_id = 0x00
        do nothing.
    script_id = 0x01
        ???

entity_id = 0x03 - script - progress update entity.
    script_id = 0x00
        do nothing.
    script_id = 0x01
        update progress variable +18 if flag 0x80 in +1c is set. Remove flag 0x40 from +1c every cycle.

entity_id = 0x04 - type3 - ???
    script_id = 0x00
        ???
    script_id = 0x02
        ???

entity_id = 0x05 - type3 - ???
    script_id = 0x00
        ???
    script_id = 0x02
        ???

entity_id = 0x06 - type3 - ???
    script_id = 0x00
        ???
    script_id = 0x02
        ???

entity_id = 0x07 - type3 - ???
    script_id = 0x00
        ???
    script_id = 0x02
        ???

entity_id = 0x08 - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x09 - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x0a - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x0b - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x0c - script - ???
    script_id = 0x00
        ???
    script_id = 0x01
        ???

entity_id = 0x0d - model - baku dragon
    script_id = 0x00
        init model state and position.
    script_id = 0x01
        do things depenging on scene progress +18. Wait otherwise.
        0xa -
        0xb -
        0xc -

entity_id = 0x0e - script - baku dragon jump
    script_id = 0x00
        perform jump.

entity_id = 0x0f - model - baku
    script_id = 0x00
        init model state and position.
    script_id = 0x01
        ???

entity_id = 0x10 - script - ???
    script_id = 0x00
        ???

entity_id = 0x11 - model - zidane
    script_id = 0x00
        init model state and position depending on 0x8007aef0 + 0x0002 (maybe stored progress???).
    script_id = 0x01
        ???
    script_id = 0x0b
        ???
    script_id = 0x0c
        ???
    script_id = 0x0d
        ???

entity_id = 0x16 - model - ???
    script_id = 0x00
        init model state and position.
    script_id = 0x01
        ???

entity_id = 0x17 - model - ???
    script_id = 0x00
        init model state and position.
    script_id = 0x01
        ???

entity_id = 0x18 - model - ???
    script_id = 0x00
        init model state and position.
    script_id = 0x01
        ???

Akari

  • *
  • Posts: 766
    • View Profile
Re: Final Fantasy IX scripts.
« Reply #1 on: 2011-03-14 11:11:02 »
Rest of script.
Code: [Select]

ENTITY: entity_id = 0x0d
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x0ed6    [ script + 0x0000 ] = h( 0x0000f9be ); // 05 d9 00 7d be f9 2c 7f
0x0ede    [ script + 0x0004 ] = h( 0x00000051 ); // 05 d9 04 7d 51 00 2c 7f
0x0ee6    [ script + 0x0006 ] = h( 0x000000c0 ); // 05 d9 06 7d c0 00 2c 7f
0x0eee    [ script + 0x0002 ] = h( 0x0000fd0f ); // 05 d9 02 7d 0f fd 2c 7f
0x0ef6    Set32and34inEntityStruct( 0x00ba, 0x70 ); // 2f 00 ba 00 70
0x0efb    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x0f03    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x0f08    SetEntityData54( animation_id = 0x0863 ); // 33 00 63 08
0x0f0c    SetEntityData56( animation_id = 0x0869 ); // 34 00 69 08
0x0f10    SetEntityData58( animation_id = 0x0869 ); // 35 00 69 08
0x0f14    SetEntityData4c( animation_id = 0x0869 ); // 7a 00 69 08
0x0f18    SetEntityData4e( animation_id = 0x0869 ); // 7b 00 69 08
0x0f1c    SetEntityCollision( 0x1a, solid_radius = 0x1a, talk_radius = 0x25 ); // 4b 00 1a 1a 25
0x0f21    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x0f27    SetEntityData6a_6b( 0x60, 0x3d ); // 8b 00 60 3d
0x0f2b    SetEntityPositionByXYZ( x = h[ script + 0x0000 ], y = h[ script + 0x0002 ], z = h[ script + 0x0004 ] ); // a1 07 d9 00 7f d9 02 7f d9 04 7f
0x0f36    SetEntityData76_90_91( 0x0862, 0x0e, 0x1b ); // 94 00 62 08 0e 1b
0x0f3c    0x80(); // 80
0x0f3d    0x9f( entity_id = 0xff, 0x2e, 0x2e, 0x2e ); // 9f 00 ff 2e 2e 2e
0x0f43    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x0f48    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x0f4b    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x0f4e    0x3a( entity_id = 0xff, 0x00 ); // 3a 00 ff 00
0x0f52    SetEntityData7c_7d_7e_7f( 0x10, 0x10, 0x10, 0x10 ); // 86 00 10 10 10 10
0x0f58    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x0f59    JumpSwitch( bu[ script + 0x0018 ] )( case 0x000a: jump_to:0x0f69)( case 0x000b: jump_to:0x0fbc)( case 0x000c: jump_to:0x14fe)( default: jump_to:0x153c); // 05 d5 18 7f 0b 03 0a 00 de 05 0b 00 5e 00 a0 05
0x0f69    Wait( 0x0c ); // 22 00 0c
0x0f6c    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x0f6f    0x9f( entity_id = 0xff, 0x2e, 0x2e, 0x2e ); // 9f 00 ff 2e 2e 2e
0x0f75    SetEntityData5c( 0x07 ); // 26 00 07
0x0f78    ResetEntityData30_50_63_78(); // 25
0x0f79    MoveToPosition( x = 0xfaea, y = 0x0051 ); // 23 00 ea fa 51 00
0x0f7f    Wait( 0x05 ); // 22 00 05
0x0f82    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x0f87    JumpTo( 0x0f95 ); // 01 0b 00
0x0f8a    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x0f92    Wait( 0x01 ); // 22 00 01
0x0f95    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x0f8a ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x0fa0    JumpTo( 0x0fa6 ); // 01 03 00
0x0fa3    Wait( 0x01 ); // 22 00 01
0x0fa6    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x0fa3 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x0fb1    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x0fb9    JumpTo( 0x153c ); // 01 80 05
0x0fbc    CallFuncafac0( 0x01, 0x82, 0xffff, 0x0000, 0x0000 ); // b3 00 01 82 ff ff 00 00 00 00
0x0fc6    CallFuncc0df4( 0x00a0, 0x0070, 0x01, 0x08 ); // 6f 00 a0 00 70 00 01 08
0x0fce    CallFuncc196c( 0x02, 0x00 ); // ca 00 02 00
0x0fd2    0x9f( entity_id = 0xff, 0x38, 0x38, 0x38 ); // 9f 00 ff 38 38 38
0x0fd8    SetEntityPositionByXZ( x = 0xfaa6, z = 0x0000 ); // 1d 00 a6 fa 00 00
0x0fde    SetEntityRotation( rotation = 0xbe ); // 36 00 be
0x0fe1    CallFuncc0bcc( 0x01 ); // 7e 00 01
0x0fe4    Wait( 0x01 ); // 22 00 01
0x0fe7    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x0fea    SetEntityData5c( 0x07 ); // 26 00 07
0x0fed    CallDynamic8006794c_1c_83c( 0xd000, 0x0274, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 74 02 00 00 00 80 7d
0x0ff8    InitAdditionalScriptEntityForCurrentEntity( entity_id = 0x0e ); // 43 00 0e
0x0ffb    Wait( 0x2f ); // 22 00 2f
0x0ffe    CallDynamic8006794c_1c_83c( 0x6201, 0xffff, 0x000064, 0x00, 0x00 ); // c6 00 01 62 ff ff 64 00 00
0x1007    CallDynamic8006794c_1c_83c( 0xa000, 0x0008, 0x000080, 0x00, 0x00 ); // c7 00 00 a0 08 00 80 00 00 00
0x1011    CallFunc54e88( 0x00, 0x00, 0x01 ); // f8 00 00 00 01
0x1016    CallFunc54e88( 0x00, 0x01, 0x00 ); // f8 00 00 01 00
0x101b    CallFunc54fe0( 0x01 ); // f7 00 01
0x101e    CallFuncc0df4( 0x00a0, 0x007f, 0x0a, 0x08 ); // 6f 00 a0 00 7f 00 0a 08
0x1026    Wait( 0x0a ); // 22 00 0a
0x1029    CallFuncc0df4( 0x00a0, 0x0070, 0x0a, 0x08 ); // 6f 00 a0 00 70 00 0a 08
0x1031    Wait( 0x0a ); // 22 00 0a
0x1034    Wait( 0x32 ); // 22 00 32
0x1037    Wait( 0x21 ); // 22 00 21
0x103a    [ 0x8007aef0 + 0x0015 ] = h( 0x00000e01 ); // 05 dc 15 7d 01 0e 2c 7f
0x1042    0xb4( hu[ 0x8007aef0 + 0x0015 ] ); // b4 01 dc 15 7f
0x1047    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000000 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 00 00 2c 2c 2c 2c 7f
0x1058    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x1060    JumpTo( 0x107b ); // 01 18 00
0x1063    JumpIf( CallFunc4b85c( h[ script + 0x0008 ] ) == false )To( 0x1076 ); // 05 d9 08 6b 7f 02 0b 00
0x106b    ( h[ script + 0x000a ] |= ( 0x00000001 << h[ script + 0x0008 ] ) ); // 05 d9 0a 7d 01 00 d9 08 16 3f 7f
0x1076    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x107b    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x1063 ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x1086    JumpIf( 0x00000001 == false )To( 0x1096 ); // 05 7d 01 00 7f 02 08 00
0x108e    ( h[ script + 0x000c ] |= 0x00000001 ); // 05 d9 0c 7d 01 00 3f 7f
0x1096    JumpIf( 0x00000001 == false )To( 0x10a6 ); // 05 7d 01 00 7f 02 08 00
0x109e    ( h[ script + 0x000c ] |= 0x00000200 ); // 05 d9 0c 7d 00 02 3f 7f
0x10a6    JumpIf( 0x00000001 == false )To( 0x10b6 ); // 05 7d 01 00 7f 02 08 00
0x10ae    ( h[ script + 0x000c ] |= 0x00000400 ); // 05 d9 0c 7d 00 04 3f 7f
0x10b6    JumpIf( 0x00000001 == false )To( 0x10c6 ); // 05 7d 01 00 7f 02 08 00
0x10be    ( h[ script + 0x000c ] |= 0x00000800 ); // 05 d9 0c 7d 00 08 3f 7f
0x10c6    [ script + 0x000e ] = h( ( h[ script + 0x000a ] XOR h[ script + 0x000c ] ) ); // 05 d9 0e d9 0a d9 0c 25 2c 7f
0x10d0    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x10d8    JumpTo( 0x10f3 ); // 01 18 00
0x10db    JumpIf( ( ( h[ script + 0x000e ] >> h[ script + 0x0008 ] ) & 0x00000001 ) == false )To( 0x10ee ); // 05 d9 0e d9 08 17 7d 01 00 24 7f 02 05 00
0x10e9    PartyRemove( character_id = h[ script + 0x0008 ] ); // dd 01 d9 08 7f
0x10ee    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x10f3    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x10db ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x10fe    JumpIf( ( CallFunc4b85c( 0x00000000 ) == 0x00000000 ) == false )To( 0x1114 ); // 05 7d 00 00 6b 7d 00 00 20 7f 02 09 00
0x110b    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 00 00 6d 2c 7f
0x1114    JumpIf( ( CallFunc4b85c( 0x00000009 ) == 0x00000000 ) == false )To( 0x112a ); // 05 7d 09 00 6b 7d 00 00 20 7f 02 09 00
0x1121    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 09 00 6d 2c 7f
0x112a    JumpIf( ( CallFunc4b85c( 0x0000000a ) == 0x00000000 ) == false )To( 0x1140 ); // 05 7d 0a 00 6b 7d 00 00 20 7f 02 09 00
0x1137    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 0a 00 6d 2c 7f
0x1140    JumpIf( ( CallFunc4b85c( 0x0000000b ) == 0x00000000 ) == false )To( 0x1156 ); // 05 7d 0b 00 6b 7d 00 00 20 7f 02 09 00
0x114d    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 0b 00 6d 2c 7f
0x1156    [ 0x8007aef0 + 0x002f ] = b( 0x00000000 ); // 05 f4 2f 01 7d 00 00 2c 7f
0x115f    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000063 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 63 00 2c 2c 2c 2c 7f
0x1170    JumpIf( 0x00000001 == false )To( 0x1186 ); // 05 7d 01 00 7f 02 0e 00
0x1178    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x117e    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x1186    JumpIf( 0x00000001 == false )To( 0x119c ); // 05 7d 01 00 7f 02 0e 00
0x118e    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x1194    [ script + 0x000a ] = h( 0x00000009 ); // 05 d9 0a 7d 09 00 2c 7f
0x119c    JumpIf( 0x00000001 == false )To( 0x11b2 ); // 05 7d 01 00 7f 02 0e 00
0x11a4    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x11aa    [ script + 0x000c ] = h( 0x0000000a ); // 05 d9 0c 7d 0a 00 2c 7f
0x11b2    JumpIf( 0x00000001 == false )To( 0x11c8 ); // 05 7d 01 00 7f 02 0e 00
0x11ba    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x11c0    [ script + 0x000e ] = h( 0x0000000b ); // 05 d9 0e 7d 0b 00 2c 7f
0x11c8    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 c5 95 c5 96 c5 97 7d 00 00 2c 2c 2c 2c 7f
0x11d9    JumpIf( ( h[ script + 0x0008 ] != 0x00000063 ) == false )To( 0x11f8 ); // 05 d9 08 7d 63 00 21 7f 02 14 00
0x11e4    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x0008 ] ) == 0x00000000 ) == false )To( 0x11f8 ); // 05 d9 08 52 7d 00 00 20 7f 02 08 00
0x11f0    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 7d 01 00 2c 7f
0x11f8    JumpIf( ( h[ script + 0x000a ] != 0x00000063 ) == false )To( 0x1217 ); // 05 d9 0a 7d 63 00 21 7f 02 14 00
0x1203    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000a ] ) == 0x00000000 ) == false )To( 0x1217 ); // 05 d9 0a 52 7d 00 00 20 7f 02 08 00
0x120f    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x20 ); // 05 c5 95 7d 01 00 2c 7f
0x1217    JumpIf( ( h[ script + 0x000c ] != 0x00000063 ) == false )To( 0x1236 ); // 05 d9 0c 7d 63 00 21 7f 02 14 00
0x1222    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000c ] ) == 0x00000000 ) == false )To( 0x1236 ); // 05 d9 0c 52 7d 00 00 20 7f 02 08 00
0x122e    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x40 ); // 05 c5 96 7d 01 00 2c 7f
0x1236    JumpIf( ( h[ script + 0x000e ] != 0x00000063 ) == false )To( 0x1255 ); // 05 d9 0e 7d 63 00 21 7f 02 14 00
0x1241    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000e ] ) == 0x00000000 ) == false )To( 0x1255 ); // 05 d9 0e 52 7d 00 00 20 7f 02 08 00
0x124d    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x80 ); // 05 c5 97 7d 01 00 2c 7f
0x1255    JumpIf( ( ( (bu[ script + 0x0012 ] >> 0x07) & 1 + ( (bu[ script + 0x0012 ] >> 0x06) & 1 + ( (bu[ script + 0x0012 ] >> 0x05) & 1 + (bu[ script + 0x0012 ] >> 0x04) & 1 ) ) ) == bu[ 0x8007aef0 + 0x002f ] ) == false )To( 0x12cd ); // 05 c5 94 c5 95 14 c5 96 14 c5 97 14 f4 2f 01 20 7f 02 64 00
0x1269    JumpIf( ( ( h[ script + 0x0008 ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x04) & 1 == 0x00000001 ) ) == false )To( 0x1282 ); // 05 d9 08 7d 63 00 21 c5 94 7d 01 00 20 27 7f 02 07 00
0x127b    CharacterSetHP( character_id = h[ script + 0x0008 ], hp = 0x0001 ); // f1 01 d9 08 7f 01 00
0x1282    JumpIf( ( ( h[ script + 0x000a ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x05) & 1 == 0x00000001 ) ) == false )To( 0x129b ); // 05 d9 0a 7d 63 00 21 c5 95 7d 01 00 20 27 7f 02 07 00
0x1294    CharacterSetHP( character_id = h[ script + 0x000a ], hp = 0x0001 ); // f1 01 d9 0a 7f 01 00
0x129b    JumpIf( ( ( h[ script + 0x000c ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x06) & 1 == 0x00000001 ) ) == false )To( 0x12b4 ); // 05 d9 0c 7d 63 00 21 c5 96 7d 01 00 20 27 7f 02 07 00
0x12ad    CharacterSetHP( character_id = h[ script + 0x000c ], hp = 0x0001 ); // f1 01 d9 0c 7f 01 00
0x12b4    JumpIf( ( ( h[ script + 0x000e ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x07) & 1 == 0x00000001 ) ) == false )To( 0x12cd ); // 05 d9 0e 7d 63 00 21 c5 97 7d 01 00 20 27 7f 02 07 00
0x12c6    CharacterSetHP( character_id = h[ script + 0x000e ], hp = 0x0001 ); // f1 01 d9 0e 7f 01 00
0x12cd    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x12d1    CharacterRemoveStatuses( character_id = 0x01, status_mask = 0x7f ); // d9 00 01 7f
0x12d5    CharacterRemoveStatuses( character_id = 0x03, status_mask = 0x7f ); // d9 00 03 7f
0x12d9    CharacterRemoveStatuses( character_id = 0x02, status_mask = 0x7f ); // d9 00 02 7f
0x12dd    CharacterRemoveStatuses( character_id = 0x04, status_mask = 0x7f ); // d9 00 04 7f
0x12e1    CharacterRemoveStatuses( character_id = 0x05, status_mask = 0x7f ); // d9 00 05 7f
0x12e5    CharacterRemoveStatuses( character_id = 0x07, status_mask = 0x7f ); // d9 00 07 7f
0x12e9    CharacterRemoveStatuses( character_id = 0x06, status_mask = 0x7f ); // d9 00 06 7f
0x12ed    CharacterRemoveStatuses( character_id = 0x08, status_mask = 0x7f ); // d9 00 08 7f
0x12f1    JumpIf( CallFunc4b85c( 0x00000005 ) == false )To( 0x1305 ); // 05 7d 05 00 6b 7f 02 0b 00
0x12fa    [ 0x8007aef0 + 0x0004 ] = b( 0x00000001 ); // 05 d4 04 7d 01 00 2c 7f
0x1302    JumpTo( 0x130d ); // 01 08 00
0x1305    [ 0x8007aef0 + 0x0004 ] = b( 0x00000000 ); // 05 d4 04 7d 00 00 2c 7f
0x130d    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000000 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x132f ); // 05 dc 13 7d 00 00 17 7d 01 00 24 7d 00 00 20 7f 02 0f 00
0x1320    CharacterInit( character_id = 0x00, type = 0x01, preset_id = 0xff, 0x09, 0x00 ); // fe 00 00 01 ff 09 00
0x1327    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000001 ); // 05 dc 13 7d 01 00 3f 7f
0x132f    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000008 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x1355 ); // 05 dc 13 7d 08 00 17 7d 01 00 24 7d 00 00 20 7f 02 13 00
0x1342    CharacterInit( character_id = 0x09, type = 0x01, preset_id = 0x08, 0x15, 0x08 ); // fe 00 09 01 08 15 08
0x1349    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000100 ); // 05 dc 13 7d 00 01 3f 7f
0x1351    CharacterSet34Flag00000200( character_id = 0x09, 0x01 ); // 62 00 09 01
0x1355    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000009 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x137b ); // 05 dc 13 7d 09 00 17 7d 01 00 24 7d 00 00 20 7f 02 13 00
0x1368    CharacterInit( character_id = 0x0a, type = 0x01, preset_id = 0x09, 0x15, 0x0a ); // fe 00 0a 01 09 15 0a
0x136f    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000200 ); // 05 dc 13 7d 00 02 3f 7f
0x1377    CharacterSet34Flag00000200( character_id = 0x0a, 0x01 ); // 62 00 0a 01
0x137b    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x0000000a ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x13a1 ); // 05 dc 13 7d 0a 00 17 7d 01 00 24 7d 00 00 20 7f 02 13 00
0x138e    CharacterInit( character_id = 0x0b, type = 0x01, preset_id = 0x0a, 0x15, 0x0c ); // fe 00 0b 01 0a 15 0c
0x1395    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000400 ); // 05 dc 13 7d 00 04 3f 7f
0x139d    CharacterSet34Flag00000200( character_id = 0x0b, 0x01 ); // 62 00 0b 01
0x13a1    CharacterSetHP( character_id = 0x09, hp = 0x270f ); // f1 00 09 0f 27
0x13a6    CharacterSetMP( character_id = 0x09, mp = 0x03e7 ); // f2 00 09 e7 03
0x13ab    CharacterRemoveStatuses( character_id = 0x09, status_mask = 0x7f ); // d9 00 09 7f
0x13af    CharacterSetHP( character_id = 0x0a, hp = 0x270f ); // f1 00 0a 0f 27
0x13b4    CharacterSetMP( character_id = 0x0a, mp = 0x03e7 ); // f2 00 0a e7 03
0x13b9    CharacterRemoveStatuses( character_id = 0x0a, status_mask = 0x7f ); // d9 00 0a 7f
0x13bd    CharacterSetHP( character_id = 0x0b, hp = 0x270f ); // f1 00 0b 0f 27
0x13c2    CharacterSetMP( character_id = 0x0b, mp = 0x03e7 ); // f2 00 0b e7 03
0x13c7    CharacterRemoveStatuses( character_id = 0x0b, status_mask = 0x7f ); // d9 00 0b 7f
0x13cb    CharacterSetName( character_id = 0x09, string_id = 0x001c ); // de 00 09 1c 00
0x13d0    CharacterSetName( character_id = 0x0b, string_id = 0x001e ); // de 00 0b 1e 00
0x13d5    CharacterSetName( character_id = 0x0a, string_id = 0x001d ); // de 00 0a 1d 00
0x13da    [ 0x8007aef0 + 0x0004 ] = b( 0x00000000 ); // 05 d4 04 7d 00 00 2c 7f
0x13e2    [ 0x8007aef0 + 0x0011 ] = b( 0x00000000 ); // 05 d4 11 7d 00 00 2c 7f
0x13ea    [ 0x8007aef0 + 0x0012 ] = b( 0x00000001 ); // 05 d4 12 7d 01 00 2c 7f
0x13f2    CharacterSetHP( character_id = 0x00, hp = 0x270f ); // f1 00 00 0f 27
0x13f7    CharacterSetHP( character_id = 0x01, hp = 0x270f ); // f1 00 01 0f 27
0x13fc    CharacterSetHP( character_id = 0x03, hp = 0x270f ); // f1 00 03 0f 27
0x1401    CharacterSetHP( character_id = 0x02, hp = 0x270f ); // f1 00 02 0f 27
0x1406    CharacterSetHP( character_id = 0x04, hp = 0x270f ); // f1 00 04 0f 27
0x140b    CharacterSetHP( character_id = 0x05, hp = 0x270f ); // f1 00 05 0f 27
0x1410    CharacterSetHP( character_id = 0x07, hp = 0x270f ); // f1 00 07 0f 27
0x1415    CharacterSetHP( character_id = 0x06, hp = 0x270f ); // f1 00 06 0f 27
0x141a    CharacterSetHP( character_id = 0x08, hp = 0x270f ); // f1 00 08 0f 27
0x141f    CharacterSetMP( character_id = 0x00, mp = 0x03e7 ); // f2 00 00 e7 03
0x1424    CharacterSetMP( character_id = 0x01, mp = 0x03e7 ); // f2 00 01 e7 03
0x1429    CharacterSetMP( character_id = 0x03, mp = 0x03e7 ); // f2 00 03 e7 03
0x142e    CharacterSetMP( character_id = 0x02, mp = 0x03e7 ); // f2 00 02 e7 03
0x1433    CharacterSetMP( character_id = 0x04, mp = 0x03e7 ); // f2 00 04 e7 03
0x1438    CharacterSetMP( character_id = 0x05, mp = 0x03e7 ); // f2 00 05 e7 03
0x143d    CharacterSetMP( character_id = 0x07, mp = 0x03e7 ); // f2 00 07 e7 03
0x1442    CharacterSetMP( character_id = 0x06, mp = 0x03e7 ); // f2 00 06 e7 03
0x1447    CharacterSetMP( character_id = 0x08, mp = 0x03e7 ); // f2 00 08 e7 03
0x144c    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x1450    CharacterRemoveStatuses( character_id = 0x01, status_mask = 0x7f ); // d9 00 01 7f
0x1454    CharacterRemoveStatuses( character_id = 0x03, status_mask = 0x7f ); // d9 00 03 7f
0x1458    CharacterRemoveStatuses( character_id = 0x02, status_mask = 0x7f ); // d9 00 02 7f
0x145c    CharacterRemoveStatuses( character_id = 0x04, status_mask = 0x7f ); // d9 00 04 7f
0x1460    CharacterRemoveStatuses( character_id = 0x05, status_mask = 0x7f ); // d9 00 05 7f
0x1464    CharacterRemoveStatuses( character_id = 0x07, status_mask = 0x7f ); // d9 00 07 7f
0x1468    CharacterRemoveStatuses( character_id = 0x06, status_mask = 0x7f ); // d9 00 06 7f
0x146c    CharacterRemoveStatuses( character_id = 0x08, status_mask = 0x7f ); // d9 00 08 7f
0x1470    0x2a( 0x00, 0x0150 ); // 2a 00 00 50 01
0x1475    CharacterSetHP( character_id = 0x00, hp = 0x270f ); // f1 00 00 0f 27
0x147a    CharacterSetHP( character_id = 0x01, hp = 0x270f ); // f1 00 01 0f 27
0x147f    CharacterSetHP( character_id = 0x03, hp = 0x270f ); // f1 00 03 0f 27
0x1484    CharacterSetHP( character_id = 0x02, hp = 0x270f ); // f1 00 02 0f 27
0x1489    CharacterSetHP( character_id = 0x04, hp = 0x270f ); // f1 00 04 0f 27
0x148e    CharacterSetHP( character_id = 0x05, hp = 0x270f ); // f1 00 05 0f 27
0x1493    CharacterSetHP( character_id = 0x07, hp = 0x270f ); // f1 00 07 0f 27
0x1498    CharacterSetHP( character_id = 0x06, hp = 0x270f ); // f1 00 06 0f 27
0x149d    CharacterSetHP( character_id = 0x08, hp = 0x270f ); // f1 00 08 0f 27
0x14a2    CharacterSetMP( character_id = 0x00, mp = 0x03e7 ); // f2 00 00 e7 03
0x14a7    CharacterSetMP( character_id = 0x01, mp = 0x03e7 ); // f2 00 01 e7 03
0x14ac    CharacterSetMP( character_id = 0x03, mp = 0x03e7 ); // f2 00 03 e7 03
0x14b1    CharacterSetMP( character_id = 0x02, mp = 0x03e7 ); // f2 00 02 e7 03
0x14b6    CharacterSetMP( character_id = 0x04, mp = 0x03e7 ); // f2 00 04 e7 03
0x14bb    CharacterSetMP( character_id = 0x05, mp = 0x03e7 ); // f2 00 05 e7 03
0x14c0    CharacterSetMP( character_id = 0x07, mp = 0x03e7 ); // f2 00 07 e7 03
0x14c5    CharacterSetMP( character_id = 0x06, mp = 0x03e7 ); // f2 00 06 e7 03
0x14ca    CharacterSetMP( character_id = 0x08, mp = 0x03e7 ); // f2 00 08 e7 03
0x14cf    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x14d3    CharacterRemoveStatuses( character_id = 0x01, status_mask = 0x7f ); // d9 00 01 7f
0x14d7    CharacterRemoveStatuses( character_id = 0x03, status_mask = 0x7f ); // d9 00 03 7f
0x14db    CharacterRemoveStatuses( character_id = 0x02, status_mask = 0x7f ); // d9 00 02 7f
0x14df    CharacterRemoveStatuses( character_id = 0x04, status_mask = 0x7f ); // d9 00 04 7f
0x14e3    CharacterRemoveStatuses( character_id = 0x05, status_mask = 0x7f ); // d9 00 05 7f
0x14e7    CharacterRemoveStatuses( character_id = 0x07, status_mask = 0x7f ); // d9 00 07 7f
0x14eb    CharacterRemoveStatuses( character_id = 0x06, status_mask = 0x7f ); // d9 00 06 7f
0x14ef    CharacterRemoveStatuses( character_id = 0x08, status_mask = 0x7f ); // d9 00 08 7f
0x14f3    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x14fb    JumpTo( 0x153c ); // 01 3e 00
0x14fe    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x1501    CallDynamic8006794c_1c_83c( 0x0700, 0x000c, 0x00, 0x00, 0x00 ); // c5 00 00 07 0c 00
0x1507    JumpTo( 0x150d ); // 01 03 00
0x150a    Wait( 0x01 ); // 22 00 01
0x150d    JumpIf( ( funcb0124( 0xc00, 0xffffffff, 0, 0, 0 ) != 0x00000000 ) == true )To( 0x150a ); // 05 7a 03 7d 00 00 21 7f 03 f2 ff
0x1518    [ script + 0x0014 ] = b( b[ script + 0x0014 ] & 0x7f ); // 05 c5 a7 7d 00 00 2c 7f
0x1520    [ script + 0x002c ] = b( 0x00000001 ); // 05 d5 2c 7d 01 00 2c 7f
0x1528    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x152b    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x152e    JumpTo( 0x1534 ); // 01 03 00
0x1531    Wait( 0x01 ); // 22 00 01
0x1534    JumpIf( 0x00000001 == true )To( 0x1531 ); // 05 7d 01 00 7f 03 f5 ff
0x153c    Wait( 0x01 ); // 22 00 01
0x153f    JumpTo( 0x0f59 ); // 01 17 fa



ENTITY: entity_id = 0x0e
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x154a    0xa8( 0x00 ); // a8 00 00
0x154d    Play76Animation(); // 9c
0x154e    WaitUntilAnimationComplete(); // 41
0x154f    Jump( x = 0xfff6, y = 0x0000, z = 0x0000, steps = 0x1e ); // e2 00 f6 ff 00 00 00 00 1e
0x1558    PerformJump(); // dc
0x1559    PlaySomeAnimation(); // 9d
0x155a    WaitUntilAnimationComplete(); // 41
0x155b    SetEntityData60and61( 0x00, 0xff ); // 3d 00 00 ff
0x155f    CallDynamic8006794c_1c_83c( 0xd000, 0x026d, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 6d 02 00 00 00 80 7d
0x156a    PlayEntityAnimation( animation_id = 0x0867 ); // 40 00 67 08
0x156e    WaitUntilAnimationComplete(); // 41
0x156f    SetEntityData54( animation_id = 0x0865 ); // 33 00 65 08
0x1573    MoveScriptToEnd( entity_id = 0xff ); // 1c 00 ff
0x1576    Return(); // 04




ENTITY: entity_id = 0x0f
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x1582    [ script + 0x0000 ] = h( 0x0000ff28 ); // 05 d9 00 7d 28 ff 2c 7f
0x158a    [ script + 0x0004 ] = h( 0x00000021 ); // 05 d9 04 7d 21 00 2c 7f
0x1592    [ script + 0x0006 ] = h( 0x000000c0 ); // 05 d9 06 7d c0 00 2c 7f
0x159a    Set32and34inEntityStruct( 0x1558, 0x70 ); // 2f 00 58 15 70
0x159f    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x15a7    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x15ac    SetEntityData54( animation_id = 0x030c ); // 33 00 0c 03
0x15b0    SetEntityData56( animation_id = 0x030b ); // 34 00 0b 03
0x15b4    SetEntityData58( animation_id = 0x0306 ); // 35 00 06 03
0x15b8    SetEntityData4c( animation_id = 0x0308 ); // 7a 00 08 03
0x15bc    SetEntityData4e( animation_id = 0x0307 ); // 7b 00 07 03
0x15c0    SetEntityCollision( 0x1a, solid_radius = 0x1a, talk_radius = 0x25 ); // 4b 00 1a 1a 25
0x15c5    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x15cb    SetEntityData6a_6b( 0x60, 0x3d ); // 8b 00 60 3d
0x15cf    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x15d2    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x15d5    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x15da    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x15db    JumpSwitch( bu[ script + 0x0018 ] )( case 0x000c: jump_to:0x15eb)( case 0x000d: jump_to:0x165b)( case 0x000e: jump_to:0x16f1)( default: jump_to:0x17ff); // 05 d5 18 7f 0b 03 0c 00 1f 02 0b 00 7b 00 11 01
0x15eb    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x15ee    SetEntityPositionByXZ( x = 0xff28, z = 0x0021 ); // 1d 00 28 ff 21 00
0x15f4    SetEntityRotation( rotation = 0xc0 ); // 36 00 c0
0x15f7    Wait( 0x03 ); // 22 00 03
0x15fa    JumpIf( ( bu[ script + 0x0011 ] == 0x000000ff ) == false )To( 0x1614 ); // 05 d5 11 7d ff 00 20 7f 02 0f 00
0x1605    GetRotationBy( ( 0x000000a0 - w[8007ae2c] ), ( 0x00000070 - w[8007ae30] ) ); // 05 7a 0c 7d a0 00 15 7a 0d 7d 70 00 15 66 7f
0x1614    Set8007ae2cAnd8007ae30WithScreenXYForEntity( 0xfa ); // a9 00 fa
0x1617    0xec( 0x07, 0x10, bu[ script + 0x0011 ], 0x00, 0x00, 0x00 ); // ec 04 07 10 d5 11 7f 00 00 00
0x1621    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x1626    JumpTo( 0x1634 ); // 01 0b 00
0x1629    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x1631    Wait( 0x01 ); // 22 00 01
0x1634    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x1629 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x163f    JumpTo( 0x1645 ); // 01 03 00
0x1642    Wait( 0x01 ); // 22 00 01
0x1645    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x1642 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x1650    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x1658    JumpTo( 0x17ff ); // 01 a4 01
0x165b    Wait( 0x32 ); // 22 00 32
0x165e    0x1fSync( 0x04, 0x80, 0x002f ); // 1f 00 04 80 2f 00
0x1664    ResetEntityData30_50_63_78(); // 25
0x1665    MoveToPosition( x = 0x0050, y = 0xff83 ); // 23 00 50 00 83 ff
0x166b    SetEntityRotateToRotation( rotation = 0x99, steps = 0x10 ); // 56 00 99 10
0x166f    WaitUntilRotationComplete(); // 50
0x1670    PlayEntityAnimation( animation_id = 0x03f9 ); // 40 00 f9 03
0x1674    Wait( 0x0a ); // 22 00 0a
0x1677    0x1fSync( 0x04, 0x80, 0x0030 ); // 1f 00 04 80 30 00
0x167d    Wait( 0x01 ); // 22 00 01
0x1680    WaitUntilAnimationComplete(); // 41
0x1681    SetEntityRotateToRotation( rotation = 0x00, steps = 0x10 ); // 56 00 00 10
0x1685    WaitUntilRotationComplete(); // 50
0x1686    PlayEntityAnimation( animation_id = 0x3137 ); // 40 00 37 31
0x168a    0x1fSync( 0x04, 0x80, 0x0031 ); // 1f 00 04 80 31 00
0x1690    WaitUntilAnimationComplete(); // 41
0x1691    InitAdditionalScriptEntityForCurrentEntity( entity_id = 0x10 ); // 43 00 10
0x1694    ResetEntityData30_50_63_78(); // 25
0x1695    MoveToPosition( x = 0x03e8, y = 0x00ab ); // 23 00 e8 03 ab 00
0x169b    SetEntityRotateToRotation( rotation = 0x40, steps = 0x20 ); // 56 00 40 20
0x169f    WaitUntilRotationComplete(); // 50
0x16a0    PlayEntityAnimation( animation_id = 0x03f4 ); // 40 00 f4 03
0x16a4    0x1fSync( 0x04, 0x80, 0x0032 ); // 1f 00 04 80 32 00
0x16aa    WaitUntilAnimationComplete(); // 41
0x16ab    SetEntityRotateToRotation( rotation = 0xc0, steps = 0x20 ); // 56 00 c0 20
0x16af    WaitUntilRotationComplete(); // 50
0x16b0    PlayEntityAnimation( animation_id = 0x03f7 ); // 40 00 f7 03
0x16b4    Wait( 0x07 ); // 22 00 07
0x16b7    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x16bc    JumpTo( 0x16ca ); // 01 0b 00
0x16bf    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x16c7    Wait( 0x01 ); // 22 00 01
0x16ca    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x16bf ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x16d5    JumpTo( 0x16db ); // 01 03 00
0x16d8    Wait( 0x01 ); // 22 00 01
0x16db    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x16d8 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x16e6    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x16ee    JumpTo( 0x17ff ); // 01 0e 01
0x16f1    SetEntityCollision( 0x0a, solid_radius = 0x0a, talk_radius = 0x0a ); // 4b 00 0a 0a 0a
0x16f6    CallFuncc47e4( 0x01, 0x01 ); // cb 00 01 01
0x16fa    CallDynamic8006794c_1c_83c( 0x6201, 0xffff, 0x000050, 0x00, 0x00 ); // c6 00 01 62 ff ff 50 00 00
0x1703    CallDynamic8006794c_1c_83c( 0xa000, 0x0004, 0x0000b7, 0x00, 0x00 ); // c7 00 00 a0 04 00 b7 00 00 00
0x170d    CallFuncc18d4( 0x01, 0x00, 0x04 ); // 65 00 01 00 04
0x1712    CallFuncc17f0( 0x01, 0x0100 ); // 61 00 01 00 01
0x1717    Wait( 0x03 ); // 22 00 03
0x171a    WaitUntilAnimationComplete(); // 41
0x171b    ResetEntityData30_50_63_78(); // 25
0x171c    MoveToPosition( x = 0x06a4, y = 0x0104 ); // 23 00 a4 06 04 01
0x1722    Wait( 0x1e ); // 22 00 1e
0x1725    CallFuncc0df4( 0x013e, 0x00a1, 0x3c, 0x08 ); // 6f 00 3e 01 a1 00 3c 08
0x172d    Wait( 0x2d ); // 22 00 2d
0x1730    [ script + 0x0011 ] = b( 0x000000c0 ); // 05 d5 11 7d c0 00 2c 7f
0x1738    [ script + 0x0014 ] = b( b[ script + 0x0014 ] | 0x04 ); // 05 c5 a2 7d 01 00 2c 7f
0x1740    [ script + 0x0014 ] = b( b[ script + 0x0014 ] | 0x08 ); // 05 c5 a3 7d 01 00 2c 7f
0x1748    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0xbf ); // 05 c5 9e 7d 00 00 2c 7f
0x1750    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x176e ); // 05 c5 9f 7d 01 00 20 7f 02 13 00
0x175b    0x2d(); // 2d
0x175c    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x176b ); // 05 c5 90 7d 00 00 20 7f 02 04 00
0x1767    [80073998] = w(w[80073998] | 00040000); // ab
0x1768    JumpTo( 0x176e ); // 01 03 00
0x176b    Wait( 0x01 ); // 22 00 01
0x176e    Set800c9df1( 0x7f ); // 27 00 7f
0x1771    CallDynamic8006794c_1c_8bc( 0x05, 0x0034 ); // fd 00 05 34 00
0x1776    [ script + 0x0015 ] = h( 0x00000034 ); // 05 d9 15 7d 34 00 2c 7f
0x177e    JumpIf( ( bu[ script + 0x0011 ] == 0x000000ff ) == false )To( 0x1798 ); // 05 d5 11 7d ff 00 20 7f 02 0f 00
0x1789    GetRotationBy( ( 0x000000a0 - w[8007ae2c] ), ( 0x00000070 - w[8007ae30] ) ); // 05 7a 0c 7d a0 00 15 7a 0d 7d 70 00 15 66 7f
0x1798    Set8007ae2cAnd8007ae30WithScreenXYForEntity( 0xfa ); // a9 00 fa
0x179b    0xec( 0x06, 0x18, bu[ script + 0x0011 ], 0xff, 0xff, 0xff ); // ec 04 06 18 d5 11 7f ff ff ff
0x17a5    Wait( 0x19 ); // 22 00 19
0x17a8    JumpIf( ( (bu[ script + 0x0014 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x17c1 ); // 05 c5 a7 7d 01 00 20 7f 02 0e 00
0x17b3    CallDynamic8006794c_1c_83c( 0x0109, 0xffff, 0x00, 0x00, 0x00 ); // c5 00 09 01 ff ff
0x17b9    [ script + 0x0014 ] = b( b[ script + 0x0014 ] & 0x7f ); // 05 c5 a7 7d 00 00 2c 7f
0x17c1    JumpIf( ( (bu[ script + 0x0014 ] >> 0x02) & 1 == 0x00000000 ) == false )To( 0x17e8 ); // 05 c5 a2 7d 00 00 20 7f 02 1c 00
0x17cc    JumpIf( ( bu[ 0x8007aef0 + 0x000d ] < 0x00000009 ) == false )To( 0x17df ); // 05 d4 0d 7d 09 00 18 7f 02 08 00
0x17d7    [ 0x8007aef0 + 0x000d ] = b( 0x00000003 ); // 05 d4 0d 7d 03 00 2c 7f
0x17df    CallDynamic8006794c_1c_83c( 0x5180, 0x0283, 0x000000, 0x00, 0x00 ); // c6 00 80 51 83 02 00 00 00
0x17e8    JumpIf( ( (bu[ script + 0x0014 ] >> 0x03) & 1 == 0x00000000 ) == false )To( 0x17f3 ); // 05 c5 a3 7d 00 00 20 7f 02 00 00
0x17f3    [ 0x8007aef0 + 0x0002 ] = h( 0x00000064 ); // 05 d8 02 7d 64 00 2c 7f
0x17fb    0x2b( 0x0034 ); // 2b 00 34 00
0x17ff    Wait( 0x01 ); // 22 00 01
0x1802    JumpTo( 0x15db ); // 01 d6 fd




ENTITY: entity_id = 0x10
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x180e    Wait( 0x0f ); // 22 00 0f
0x1811    JumpTo( 0x1817 ); // 01 03 00
0x1814    Wait( 0x01 ); // 22 00 01
0x1817    JumpIf( ( bu[ script + 0x002c ] == 0x00000000 ) == true )To( 0x1814 ); // 05 d5 2c 7d 00 00 20 7f 03 f2 ff
0x1822    CallDynamic8006794c_1c_83c( 0x0000, 0x000c, 0x00, 0x00, 0x00 ); // c5 00 00 00 0c 00
0x1828    JumpTo( 0x182e ); // 01 03 00
0x182b    Wait( 0x01 ); // 22 00 01
0x182e    JumpIf( ( funcb0124( 0xc00, 0xffffffff, 0, 0, 0 ) != 0x00000000 ) == true )To( 0x182b ); // 05 7a 03 7d 00 00 21 7f 03 f2 ff
0x1839    [ 0x8007aef0 + 0x0008 ] = b( 0x0000007d ); // 05 d4 08 7d 7d 00 2c 7f
0x1841    CallDynamic8006794c_1c_83c( 0x4201, 0x000c, bu[ 0x8007aef0 + 0x0008 ], 0x00, 0x00 ); // c6 04 01 42 0c 00 d4 08 7f
0x184a    [ script + 0x0014 ] = b( b[ script + 0x0014 ] & 0x7f ); // 05 c5 a7 7d 00 00 2c 7f
0x1852    MoveScriptToEnd( entity_id = 0xff ); // 1c 00 ff
0x1855    Return(); // 04






Akari

  • *
  • Posts: 766
    • View Profile
Re: Final Fantasy IX scripts.
« Reply #2 on: 2011-03-14 11:11:48 »
3rd part of script =)
Code: [Select]
ENTITY: entity_id = 0x11
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x186e    JumpSwitch( h[ 0x8007aef0 + 0x0002 ] )( case 0x0066: jump_to:0x187c)( case 0x0067: jump_to:0x1897)( default: jump_to:0x18b2); // 05 d8 02 7f 0b 02 66 00 3f 00 09 00 24 00
0x187c    [ script + 0x0000 ] = h( 0x000002d9 ); // 05 d9 00 7d d9 02 2c 7f
0x1884    [ script + 0x0004 ] = h( 0x000000e2 ); // 05 d9 04 7d e2 00 2c 7f
0x188c    [ script + 0x0006 ] = h( 0x00000000 ); // 05 d9 06 7d 00 00 2c 7f
0x1894    JumpTo( 0x18cd ); // 01 36 00
0x1897    [ script + 0x0000 ] = h( 0x0000fd3b ); // 05 d9 00 7d 3b fd 2c 7f
0x189f    [ script + 0x0004 ] = h( 0x0000001b ); // 05 d9 04 7d 1b 00 2c 7f
0x18a7    [ script + 0x0006 ] = h( 0x00000000 ); // 05 d9 06 7d 00 00 2c 7f
0x18af    JumpTo( 0x18cd ); // 01 1b 00
0x18b2    [ script + 0x0000 ] = h( 0x00000019 ); // 05 d9 00 7d 19 00 2c 7f
0x18ba    [ script + 0x0004 ] = h( 0x0000fbb4 ); // 05 d9 04 7d b4 fb 2c 7f
0x18c2    [ script + 0x0006 ] = h( 0x00000080 ); // 05 d9 06 7d 80 00 2c 7f
0x18ca    JumpTo( 0x18cd ); // 01 00 00
0x18cd    Set32and34inEntityStruct( 0x0062, 0x5d ); // 2f 00 62 00 5d
0x18d2    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x18da    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x18df    SetEntityData54( animation_id = 0x00c8 ); // 33 00 c8 00
0x18e3    SetEntityData56( animation_id = 0x0019 ); // 34 00 19 00
0x18e7    SetEntityData58( animation_id = 0x0026 ); // 35 00 26 00
0x18eb    SetEntityData4c( animation_id = 0x0028 ); // 7a 00 28 00
0x18ef    SetEntityData4e( animation_id = 0x0029 ); // 7b 00 29 00
0x18f3    SetEntityData74( 0x0036 ); // 52 00 36 00
0x18f7    SetEntityCollision( 0x14, solid_radius = 0x18, talk_radius = 0x28 ); // 4b 00 14 18 28
0x18fc    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x1902    SetEntityData6a_6b( 0x61, 0x3d ); // 8b 00 61 3d
0x1906    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x190c    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1912    CallFuncaba98( 0x10, 0x0019, 0x0004, 0x0392 ); // 88 00 10 19 00 04 00 92 03
0x191b    CallFuncaba98( 0x11, 0x0019, 0x0004, 0x039b ); // 88 00 11 19 00 04 00 9b 03
0x1924    CallFuncaba98( 0x12, 0x0019, 0x0004, 0x0001 ); // 88 00 12 19 00 04 00 01 00
0x192d    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1933    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1939    CallFuncaba98( 0x10, 0x0019, 0x000d, 0x0392 ); // 88 00 10 19 00 0d 00 92 03
0x1942    CallFuncaba98( 0x11, 0x0019, 0x000d, 0x039b ); // 88 00 11 19 00 0d 00 9b 03
0x194b    CallFuncaba98( 0x12, 0x0019, 0x000d, 0x0001 ); // 88 00 12 19 00 0d 00 01 00
0x1954    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x195a    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1960    CallFuncaba98( 0x10, 0x0026, 0x0000, 0x0392 ); // 88 00 10 26 00 00 00 92 03
0x1969    CallFuncaba98( 0x11, 0x0026, 0x0000, 0x039b ); // 88 00 11 26 00 00 00 9b 03
0x1972    CallFuncaba98( 0x12, 0x0026, 0x0000, 0x0001 ); // 88 00 12 26 00 00 00 01 00
0x197b    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1981    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1987    CallFuncaba98( 0x10, 0x0026, 0x0008, 0x0392 ); // 88 00 10 26 00 08 00 92 03
0x1990    CallFuncaba98( 0x11, 0x0026, 0x0008, 0x039b ); // 88 00 11 26 00 08 00 9b 03
0x1999    CallFuncaba98( 0x12, 0x0026, 0x0008, 0x0001 ); // 88 00 12 26 00 08 00 01 00
0x19a2    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x19a5    CallFuncc02d0( 0x11, 0x00f0, 0x88, 0x04, 0x00, 0x00, 0x00 ); // 92 00 11 f0 00 88 04 00 00 00
0x19af    [ script + 0x1700 ] = h( -1 ); // 90
0x19b0    [ script + 0x16ed ] = h( GetCurrentEntityId() ); // 2c
0x19b1    [ script + 0x001f ] = b( 0x00000038 ); // 05 d5 1f 7d 38 00 2c 7f
0x19b9    [ script + 0x0020 ] = b( 0x00000030 ); // 05 d5 20 7d 30 00 2c 7f
0x19c1    [ script + 0x0021 ] = b( 0x00000030 ); // 05 d5 21 7d 30 00 2c 7f
0x19c9    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x19d5    Wait( 0x01 ); // 22 00 01
0x19d8    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x19e4    0x80(); // 80
0x19e5    Return(); // 04

SCRIPT: script_id = 0x0b
script = w[8007aecc];
0x19e6    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x19ec    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x19f2    CallFuncaba98( 0x10, 0x0019, 0x0004, 0x0392 ); // 88 00 10 19 00 04 00 92 03
0x19fb    CallFuncaba98( 0x11, 0x0019, 0x0004, 0x039b ); // 88 00 11 19 00 04 00 9b 03
0x1a04    CallFuncaba98( 0x12, 0x0019, 0x0004, 0x0001 ); // 88 00 12 19 00 04 00 01 00
0x1a0d    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1a13    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1a19    CallFuncaba98( 0x10, 0x0019, 0x000d, 0x0392 ); // 88 00 10 19 00 0d 00 92 03
0x1a22    CallFuncaba98( 0x11, 0x0019, 0x000d, 0x039b ); // 88 00 11 19 00 0d 00 9b 03
0x1a2b    CallFuncaba98( 0x12, 0x0019, 0x000d, 0x0001 ); // 88 00 12 19 00 0d 00 01 00
0x1a34    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1a3a    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1a40    CallFuncaba98( 0x10, 0x0026, 0x0000, 0x0392 ); // 88 00 10 26 00 00 00 92 03
0x1a49    CallFuncaba98( 0x11, 0x0026, 0x0000, 0x039b ); // 88 00 11 26 00 00 00 9b 03
0x1a52    CallFuncaba98( 0x12, 0x0026, 0x0000, 0x0001 ); // 88 00 12 26 00 00 00 01 00
0x1a5b    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1a61    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1a67    CallFuncaba98( 0x10, 0x0026, 0x0008, 0x0392 ); // 88 00 10 26 00 08 00 92 03
0x1a70    CallFuncaba98( 0x11, 0x0026, 0x0008, 0x039b ); // 88 00 11 26 00 08 00 9b 03
0x1a79    CallFuncaba98( 0x12, 0x0026, 0x0008, 0x0001 ); // 88 00 12 26 00 08 00 01 00
0x1a82    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x1a83    JumpSwitch( bu[ script + 0x0018 ] )( case 0x0000: jump_to:0x1aab)( case 0x0001: jump_to:0x1faa)( case 0x0002: jump_to:0x2072)( case 0x0003: jump_to:0x21c9)( case 0x0004: jump_to:0x2542)( case 0x0005: jump_to:0x27c1)( case 0x0006: jump_to:0x255b)( case 0x0007: jump_to:0x25a8)( case 0x0008: jump_to:0x25f0)( case 0x0009: jump_to:0x27c1)( case 0x000a: jump_to:0x2601)( case 0x000b: jump_to:0x267d)( case 0x000c: jump_to:0x2683)( case 0x000d: jump_to:0x272c)( case 0x000e: jump_to:0x277a)( default: jump_to:0x27c1); // 05 d5 18 7f 0b 0f 00 00 39 0d 23 00 22 05 ea 05 41 07 ba 0a 39 0d d3 0a 20 0b 68 0b 39 0d 79 0b f5 0b fb 0b a4 0c f2 0c
0x1aab    SetEntityData5c( 0x0f ); // 26 00 0f
0x1aae    Wait( 0x19 ); // 22 00 19
0x1ab1    0x1fSync( 0x02, 0x80, 0x0022 ); // 1f 00 02 80 22 00
0x1ab7    ResetEntityData30_50_63_78(); // 25
0x1ab8    MoveToPosition( x = 0x0019, y = 0xfd68 ); // 23 00 19 00 68 fd
0x1abe    Wait( 0x05 ); // 22 00 05
0x1ac1    PlayEntityAnimation( animation_id = 0x0a9f ); // 40 00 9f 0a
0x1ac5    Wait( 0x0a ); // 22 00 0a
0x1ac8    0x1fSync( 0x02, 0x80, 0x0023 ); // 1f 00 02 80 23 00
0x1ace    WaitUntilAnimationComplete(); // 41
0x1acf    Wait( 0x0a ); // 22 00 0a
0x1ad2    PlayEntityAnimation( animation_id = 0x0a9d ); // 40 00 9d 0a
0x1ad6    Wait( 0x3d ); // 22 00 3d
0x1ad9    CallDynamic8006794c_1c_83c( 0xd000, 0x015d, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 5d 01 00 00 00 80 7d
0x1ae4    WaitUntilAnimationComplete(); // 41
0x1ae5    SetEntityData54( animation_id = 0x0a9b ); // 33 00 9b 0a
0x1ae9    SetEntityData56( animation_id = 0x0a99 ); // 34 00 99 0a
0x1aed    SetEntityData4c( animation_id = 0x0aa3 ); // 7a 00 a3 0a
0x1af1    SetEntityData4e( animation_id = 0x0aa5 ); // 7b 00 a5 0a
0x1af5    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1afb    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1b01    CallFuncaba98( 0x10, 0x0a99, 0x0004, 0x0392 ); // 88 00 10 99 0a 04 00 92 03
0x1b0a    CallFuncaba98( 0x11, 0x0a99, 0x0004, 0x039b ); // 88 00 11 99 0a 04 00 9b 03
0x1b13    CallFuncaba98( 0x12, 0x0a99, 0x0004, 0x0001 ); // 88 00 12 99 0a 04 00 01 00
0x1b1c    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x1b22    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x1b28    CallFuncaba98( 0x10, 0x0a99, 0x000d, 0x0392 ); // 88 00 10 99 0a 0d 00 92 03
0x1b31    CallFuncaba98( 0x11, 0x0a99, 0x000d, 0x039b ); // 88 00 11 99 0a 0d 00 9b 03
0x1b3a    CallFuncaba98( 0x12, 0x0a99, 0x000d, 0x0001 ); // 88 00 12 99 0a 0d 00 01 00
0x1b43    InitScriptEntity( entity_id = 0x01, shared_id = 0x00 ); // 07 01 00
0x1b46    0x7f(); // 7f
0x1b47    Wait( 0x01 ); // 22 00 01
0x1b4a    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x1b56    ( hu[ script + 0x0022 ] += 0x00000004 ); // 05 dd 22 7d 04 00 32 7f
0x1b5e    JumpIf( ( bu[ script + 0x001f ] < 0x00000060 ) == false )To( 0x1b81 ); // 05 d5 1f 7d 60 00 18 7f 02 18 00
0x1b69    ( bu[ script + 0x001f ] += 0x00000002 ); // 05 d5 1f 7d 02 00 32 7f
0x1b71    ( bu[ script + 0x0020 ] += 0x00000002 ); // 05 d5 20 7d 02 00 32 7f
0x1b79    ( bu[ script + 0x0021 ] += 0x00000002 ); // 05 d5 21 7d 02 00 32 7f
0x1b81    JumpIf( ( hu[ script + 0x0024 ] < 0x00000080 ) == false )To( 0x1b94 ); // 05 dd 24 7d 80 00 18 7f 02 08 00
0x1b8c    ( hu[ script + 0x0024 ] += 0x00000004 ); // 05 dd 24 7d 04 00 32 7f
0x1b94    JumpIf( ( hu[ script + 0x0022 ] < 0x00000080 ) == true )To( 0x1b47 ); // 05 dd 22 7d 80 00 18 7f 03 a8 ff
0x1b9f    [ script + 0x0022 ] = h( 0x00000080 ); // 05 dd 22 7d 80 00 2c 7f
0x1ba7    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x1bb3    Wait( 0x01 ); // 22 00 01
0x1bb6    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x1bc2    [ 0x8007aef0 + 0x0015 ] = h( 0x00000001 ); // 05 dc 15 7d 01 00 2c 7f
0x1bca    0xb4( hu[ 0x8007aef0 + 0x0015 ] ); // b4 01 dc 15 7f
0x1bcf    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000000 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 00 00 2c 2c 2c 2c 7f
0x1be0    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x1be8    JumpTo( 0x1c03 ); // 01 18 00
0x1beb    JumpIf( CallFunc4b85c( h[ script + 0x0008 ] ) == false )To( 0x1bfe ); // 05 d9 08 6b 7f 02 0b 00
0x1bf3    ( h[ script + 0x000a ] |= ( 0x00000001 << h[ script + 0x0008 ] ) ); // 05 d9 0a 7d 01 00 d9 08 16 3f 7f
0x1bfe    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x1c03    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x1beb ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x1c0e    JumpIf( 0x00000001 == false )To( 0x1c1e ); // 05 7d 01 00 7f 02 08 00
0x1c16    ( h[ script + 0x000c ] |= 0x00000001 ); // 05 d9 0c 7d 01 00 3f 7f
0x1c1e    JumpIf( 0x00000000 == false )To( 0x1c30 ); // 05 7d 00 00 7f 02 0a 00
0x1c26    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x1c30    JumpIf( 0x00000000 == false )To( 0x1c42 ); // 05 7d 00 00 7f 02 0a 00
0x1c38    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x1c42    JumpIf( 0x00000000 == false )To( 0x1c54 ); // 05 7d 00 00 7f 02 0a 00
0x1c4a    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x1c54    [ script + 0x000e ] = h( ( h[ script + 0x000a ] XOR h[ script + 0x000c ] ) ); // 05 d9 0e d9 0a d9 0c 25 2c 7f
0x1c5e    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x1c66    JumpTo( 0x1c81 ); // 01 18 00
0x1c69    JumpIf( ( ( h[ script + 0x000e ] >> h[ script + 0x0008 ] ) & 0x00000001 ) == false )To( 0x1c7c ); // 05 d9 0e d9 08 17 7d 01 00 24 7f 02 05 00
0x1c77    PartyRemove( character_id = h[ script + 0x0008 ] ); // dd 01 d9 08 7f
0x1c7c    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x1c81    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x1c69 ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x1c8c    JumpIf( ( CallFunc4b85c( 0x00000000 ) == 0x00000000 ) == false )To( 0x1ca2 ); // 05 7d 00 00 6b 7d 00 00 20 7f 02 09 00
0x1c99    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 00 00 6d 2c 7f
0x1ca2    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x1cb8 ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x1caf    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x1cb8    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x1cce ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x1cc5    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x1cce    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x1ce4 ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x1cdb    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x1ce4    [ 0x8007aef0 + 0x002f ] = b( 0x00000000 ); // 05 f4 2f 01 7d 00 00 2c 7f
0x1ced    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000063 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 63 00 2c 2c 2c 2c 7f
0x1cfe    JumpIf( 0x00000001 == false )To( 0x1d14 ); // 05 7d 01 00 7f 02 0e 00
0x1d06    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x1d0c    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x1d14    JumpIf( 0x00000000 == false )To( 0x1d2a ); // 05 7d 00 00 7f 02 0e 00
0x1d1c    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x1d22    [ script + 0x000a ] = h( 0x0000ffff ); // 05 d9 0a 7d ff ff 2c 7f
0x1d2a    JumpIf( 0x00000000 == false )To( 0x1d40 ); // 05 7d 00 00 7f 02 0e 00
0x1d32    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x1d38    [ script + 0x000c ] = h( 0x0000ffff ); // 05 d9 0c 7d ff ff 2c 7f
0x1d40    JumpIf( 0x00000000 == false )To( 0x1d56 ); // 05 7d 00 00 7f 02 0e 00
0x1d48    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x1d4e    [ script + 0x000e ] = h( 0x0000ffff ); // 05 d9 0e 7d ff ff 2c 7f
0x1d56    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 c5 95 c5 96 c5 97 7d 00 00 2c 2c 2c 2c 7f
0x1d67    JumpIf( ( h[ script + 0x0008 ] != 0x00000063 ) == false )To( 0x1d86 ); // 05 d9 08 7d 63 00 21 7f 02 14 00
0x1d72    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x0008 ] ) == 0x00000000 ) == false )To( 0x1d86 ); // 05 d9 08 52 7d 00 00 20 7f 02 08 00
0x1d7e    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 7d 01 00 2c 7f
0x1d86    JumpIf( ( h[ script + 0x000a ] != 0x00000063 ) == false )To( 0x1da5 ); // 05 d9 0a 7d 63 00 21 7f 02 14 00
0x1d91    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000a ] ) == 0x00000000 ) == false )To( 0x1da5 ); // 05 d9 0a 52 7d 00 00 20 7f 02 08 00
0x1d9d    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x20 ); // 05 c5 95 7d 01 00 2c 7f
0x1da5    JumpIf( ( h[ script + 0x000c ] != 0x00000063 ) == false )To( 0x1dc4 ); // 05 d9 0c 7d 63 00 21 7f 02 14 00
0x1db0    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000c ] ) == 0x00000000 ) == false )To( 0x1dc4 ); // 05 d9 0c 52 7d 00 00 20 7f 02 08 00
0x1dbc    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x40 ); // 05 c5 96 7d 01 00 2c 7f
0x1dc4    JumpIf( ( h[ script + 0x000e ] != 0x00000063 ) == false )To( 0x1de3 ); // 05 d9 0e 7d 63 00 21 7f 02 14 00
0x1dcf    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000e ] ) == 0x00000000 ) == false )To( 0x1de3 ); // 05 d9 0e 52 7d 00 00 20 7f 02 08 00
0x1ddb    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x80 ); // 05 c5 97 7d 01 00 2c 7f
0x1de3    JumpIf( ( ( (bu[ script + 0x0012 ] >> 0x07) & 1 + ( (bu[ script + 0x0012 ] >> 0x06) & 1 + ( (bu[ script + 0x0012 ] >> 0x05) & 1 + (bu[ script + 0x0012 ] >> 0x04) & 1 ) ) ) == bu[ 0x8007aef0 + 0x002f ] ) == false )To( 0x1e5b ); // 05 c5 94 c5 95 14 c5 96 14 c5 97 14 f4 2f 01 20 7f 02 64 00
0x1df7    JumpIf( ( ( h[ script + 0x0008 ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x04) & 1 == 0x00000001 ) ) == false )To( 0x1e10 ); // 05 d9 08 7d 63 00 21 c5 94 7d 01 00 20 27 7f 02 07 00
0x1e09    CharacterSetHP( character_id = h[ script + 0x0008 ], hp = 0x0001 ); // f1 01 d9 08 7f 01 00
0x1e10    JumpIf( ( ( h[ script + 0x000a ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x05) & 1 == 0x00000001 ) ) == false )To( 0x1e29 ); // 05 d9 0a 7d 63 00 21 c5 95 7d 01 00 20 27 7f 02 07 00
0x1e22    CharacterSetHP( character_id = h[ script + 0x000a ], hp = 0x0001 ); // f1 01 d9 0a 7f 01 00
0x1e29    JumpIf( ( ( h[ script + 0x000c ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x06) & 1 == 0x00000001 ) ) == false )To( 0x1e42 ); // 05 d9 0c 7d 63 00 21 c5 96 7d 01 00 20 27 7f 02 07 00
0x1e3b    CharacterSetHP( character_id = h[ script + 0x000c ], hp = 0x0001 ); // f1 01 d9 0c 7f 01 00
0x1e42    JumpIf( ( ( h[ script + 0x000e ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x07) & 1 == 0x00000001 ) ) == false )To( 0x1e5b ); // 05 d9 0e 7d 63 00 21 c5 97 7d 01 00 20 27 7f 02 07 00
0x1e54    CharacterSetHP( character_id = h[ script + 0x000e ], hp = 0x0001 ); // f1 01 d9 0e 7f 01 00
0x1e5b    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x1e5f    CharacterRemoveStatuses( character_id = 0x01, status_mask = 0x7f ); // d9 00 01 7f
0x1e63    CharacterRemoveStatuses( character_id = 0x03, status_mask = 0x7f ); // d9 00 03 7f
0x1e67    CharacterRemoveStatuses( character_id = 0x02, status_mask = 0x7f ); // d9 00 02 7f
0x1e6b    CharacterRemoveStatuses( character_id = 0x04, status_mask = 0x7f ); // d9 00 04 7f
0x1e6f    CharacterRemoveStatuses( character_id = 0x05, status_mask = 0x7f ); // d9 00 05 7f
0x1e73    CharacterRemoveStatuses( character_id = 0x07, status_mask = 0x7f ); // d9 00 07 7f
0x1e77    CharacterRemoveStatuses( character_id = 0x06, status_mask = 0x7f ); // d9 00 06 7f
0x1e7b    CharacterRemoveStatuses( character_id = 0x08, status_mask = 0x7f ); // d9 00 08 7f
0x1e7f    JumpIf( CallFunc4b85c( 0x00000005 ) == false )To( 0x1e93 ); // 05 7d 05 00 6b 7f 02 0b 00
0x1e88    [ 0x8007aef0 + 0x0004 ] = b( 0x00000001 ); // 05 d4 04 7d 01 00 2c 7f
0x1e90    JumpTo( 0x1e9b ); // 01 08 00
0x1e93    [ 0x8007aef0 + 0x0004 ] = b( 0x00000000 ); // 05 d4 04 7d 00 00 2c 7f
0x1e9b    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000000 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x1ec1 ); // 05 dc 13 7d 00 00 17 7d 01 00 24 7d 00 00 20 7f 02 13 00
0x1eae    CharacterInit( character_id = 0x00, type = 0x01, preset_id = 0x00, 0x09, 0x00 ); // fe 00 00 01 00 09 00
0x1eb5    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000001 ); // 05 dc 13 7d 01 00 3f 7f
0x1ebd    CharacterSet34Flag00000200( character_id = 0x00, 0x01 ); // 62 00 00 01
0x1ec1    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000002 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x1ee7 ); // 05 dc 13 7d 02 00 17 7d 01 00 24 7d 00 00 20 7f 02 13 00
0x1ed4    CharacterInit( character_id = 0x02, type = 0x01, preset_id = 0x02, 0x06, 0x02 ); // fe 00 02 01 02 06 02
0x1edb    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000004 ); // 05 dc 13 7d 04 00 3f 7f
0x1ee3    CharacterSet34Flag00000200( character_id = 0x02, 0x00 ); // 62 00 02 00
0x1ee7    CharacterSetHP( character_id = 0x00, hp = 0x270f ); // f1 00 00 0f 27
0x1eec    CharacterSetMP( character_id = 0x00, mp = 0x03e7 ); // f2 00 00 e7 03
0x1ef1    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x1ef5    CharacterSetName( character_id = 0x00, string_id = 0x0013 ); // de 00 00 13 00
0x1efa    [ 0x8007aef0 + 0x0004 ] = b( 0x00000000 ); // 05 d4 04 7d 00 00 2c 7f
0x1f02    [ 0x8007aef0 + 0x0011 ] = b( 0x00000000 ); // 05 d4 11 7d 00 00 2c 7f
0x1f0a    [ 0x8007aef0 + 0x0012 ] = b( 0x00000001 ); // 05 d4 12 7d 01 00 2c 7f
0x1f12    JumpIf( ( hu[ 0x8007aef0 + 0x0000 ] > 0x000003e8 ) == false )To( 0x1f64 ); // 05 dc 00 7d e8 03 19 7f 02 47 00
0x1f1d    Wait( 0x0a ); // 22 00 0a
0x1f20    Set8007bba8( 0x00, hu[ 0x8007aef0 + 0x0000 ] ); // 66 02 00 dc 00 7f
0x1f26    Set8007bba8( 0x01, 0x03e8 ); // 66 00 01 e8 03
0x1f2b    Set8007bba8( 0x02, b[ 0x8007aef0 + 0x001c ] ); // 66 02 02 d0 1c 7f
0x1f31    0x20Async( 0x06, 0x00, 0x0002 ); // 20 00 06 00 02 00
0x1f37    0x8e(); // 8e
0x1f38    JumpTo( 0x1f3e ); // 01 03 00
0x1f3b    Wait( 0x01 ); // 22 00 01
0x1f3e    JumpIf( ( ( IsButtonPressed( 0x00000001 ) || IsButtonPressed( 0x00000008 ) ) == false ) == true )To( 0x1f3b ); // 05 7d 01 00 4f 7d 08 00 4f 28 0e 7f 03 ee ff
0x1f4d    JumpIf( IsButtonPressed( 0x00000008 ) == false )To( 0x1f5e ); // 05 7d 08 00 4f 7f 02 08 00
0x1f56    [ 0x8007aef0 + 0x0000 ] = h( 0x000003e8 ); // 05 dc 00 7d e8 03 2c 7f
0x1f5e    0x21( 0x06 ); // 21 00 06
0x1f61    JumpTo( 0x1f6c ); // 01 08 00
0x1f64    [ 0x8007aef0 + 0x0000 ] = h( 0x000003e8 ); // 05 dc 00 7d e8 03 2c 7f
0x1f6c    CallFuncc778c( 0x0029, 0x00 ); // 9a 00 29 00 00
0x1f71    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x1f79    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x1f9f ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x1f84    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x1f9f ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x1f8f    0x2e(); // 2e
0x1f90    Set800c9df1( 0xff ); // 27 00 ff
0x1f93    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x1f9f ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x1f9e    [80073998] = w(w[80073998] & fffbffff); // aa
0x1f9f    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x1fa7    JumpTo( 0x27c1 ); // 01 17 08
0x1faa    CallFuncc47e4( 0x01, 0x00 ); // cb 00 01 00
0x1fae    JumpIf( ( ( IsButtonPressed( 0x00020000 ) || IsButtonPressed( 0x00080000 ) ) && ( bu[ script + 0x0026 ] == 0x00000001 ) ) == false )To( 0x2067 ); // 05 7e 00 00 02 00 4f 7e 00 00 08 00 4f 28 d5 26 7d 01 00 20 27 7f 02 a0 00
0x1fc7    [ script + 0x0013 ] = b( b[ script + 0x0013 ] & 0xbf ); // 05 c5 9e 7d 00 00 2c 7f
0x1fcf    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x1fed ); // 05 c5 9f 7d 01 00 20 7f 02 13 00
0x1fda    0x2d(); // 2d
0x1fdb    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x1fea ); // 05 c5 90 7d 00 00 20 7f 02 04 00
0x1fe6    [80073998] = w(w[80073998] | 00040000); // ab
0x1fe7    JumpTo( 0x1fed ); // 01 03 00
0x1fea    Wait( 0x01 ); // 22 00 01
0x1fed    Set800c9df1( 0x7f ); // 27 00 7f
0x1ff0    [ script + 0x002a ] = b( 0x00000003 ); // 05 d5 2a 7d 03 00 2c 7f
0x1ff8    0x21( 0x01 ); // 21 00 01
0x1ffb    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x00000000, 0x0000015e ), steps = 0x10 ); // 56 01 7d 00 00 7d 5e 01 5d 7f 10
0x2006    WaitUntilRotationComplete(); // 50
0x2007    0x1fSync( 0x02, 0x80, 0x0024 ); // 1f 00 02 80 24 00
0x200d    JumpIf( ( Func4ecc4() == 0x00000001 ) == false )To( 0x205c ); // 05 7a 09 7d 01 00 20 7f 02 44 00
0x2018    [ script + 0x0013 ] = b( b[ script + 0x0013 ] | 0x40 ); // 05 c5 9e 7d 01 00 2c 7f
0x2020    JumpIf( ( (bu[ script + 0x0013 ] >> 0x07) & 1 == 0x00000001 ) == false )To( 0x2046 ); // 05 c5 9f 7d 01 00 20 7f 02 1b 00
0x202b    JumpIf( ( (bu[ script + 0x0013 ] >> 0x04) & 1 == 0x00000000 ) == false )To( 0x2046 ); // 05 c5 9c 7d 00 00 20 7f 02 10 00
0x2036    0x2e(); // 2e
0x2037    Set800c9df1( 0xff ); // 27 00 ff
0x203a    JumpIf( ( (bu[ script + 0x0012 ] >> 0x00) & 1 == 0x00000000 ) == false )To( 0x2046 ); // 05 c5 90 7d 00 00 20 7f 02 01 00
0x2045    [80073998] = w(w[80073998] & fffbffff); // aa
0x2046    [ script + 0x0028 ] = h( ( 0x00000002 / h[ script + 0x0028 ] ) ); // 05 d9 28 d9 28 7d 02 00 12 2c 7f
0x2051    [ script + 0x002a ] = b( 0x00000000 ); // 05 d5 2a 7d 00 00 2c 7f
0x2059    JumpTo( 0x27c1 ); // 01 65 07
0x205c    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2064    JumpTo( 0x27c1 ); // 01 5a 07
0x2067    [ script + 0x0026 ] = b( 0x00000000 ); // 05 d5 26 7d 00 00 2c 7f
0x206f    JumpTo( 0x27c1 ); // 01 4f 07
0x2072    CallFuncc47e4( 0x01, 0x01 ); // cb 00 01 01
0x2076    PlayEntityAnimation( animation_id = 0x0aa1 ); // 40 00 a1 0a
0x207a    SetEntityData54( animation_id = 0x0144 ); // 33 00 44 01
0x207e    SetEntityData56( animation_id = 0x0019 ); // 34 00 19 00
0x2082    SetEntityData4c( animation_id = 0x0028 ); // 7a 00 28 00
0x2086    SetEntityData4e( animation_id = 0x0029 ); // 7b 00 29 00
0x208a    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x2090    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x2096    CallFuncaba98( 0x10, 0x0a99, 0x0004, 0x0392 ); // 88 00 10 99 0a 04 00 92 03
0x209f    CallFuncaba98( 0x11, 0x0a99, 0x0004, 0x039b ); // 88 00 11 99 0a 04 00 9b 03
0x20a8    CallFuncaba98( 0x12, 0x0a99, 0x0004, 0x0001 ); // 88 00 12 99 0a 04 00 01 00
0x20b1    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x20b7    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x20bd    CallFuncaba98( 0x10, 0x0a99, 0x000d, 0x0392 ); // 88 00 10 99 0a 0d 00 92 03
0x20c6    CallFuncaba98( 0x11, 0x0a99, 0x000d, 0x039b ); // 88 00 11 99 0a 0d 00 9b 03
0x20cf    CallFuncaba98( 0x12, 0x0a99, 0x000d, 0x0001 ); // 88 00 12 99 0a 0d 00 01 00
0x20d8    Wait( 0x19 ); // 22 00 19
0x20db    [ script + 0x001e ] = b( 0x00000001 ); // 05 d5 1e 7d 01 00 2c 7f
0x20e3    CallFuncafac0( 0x01, 0x82, 0x002a, 0x0000, 0x0000 ); // b3 00 01 82 2a 00 00 00 00 00
0x20ed    CallFuncafac0( 0x01, 0x87, 0xfff4, 0xfe43, 0x00b4 ); // b3 00 01 87 f4 ff 43 fe b4 00
0x20f7    CallFuncafac0( 0x01, 0x8c, 0x0000, 0x0000, 0x0000 ); // b3 00 01 8c 00 00 00 00 00 00
0x2101    CallFuncafac0( 0x01, 0x91, 0x03a8, 0x0000, 0x0000 ); // b3 00 01 91 a8 03 00 00 00 00
0x210b    CallFuncafac0( 0x01, 0x9b, 0x0080, 0x0000, 0x0000 ); // b3 00 01 9b 80 00 00 00 00 00
0x2115    CallFuncafac0( 0x01, 0xa0, 0x0010, 0x0000, 0x0000 ); // b3 00 01 a0 10 00 00 00 00 00
0x211f    CallFuncafac0( 0x01, 0xaa, 0x0000, 0x0000, 0x0000 ); // b3 00 01 aa 00 00 00 00 00 00
0x2129    CallFuncafac0( 0x01, 0x9c, 0x0001, 0x0000, 0x0000 ); // b3 00 01 9c 01 00 00 00 00 00
0x2133    Wait( 0x05 ); // 22 00 05
0x2136    CallFuncafac0( 0x00, 0x82, 0xffff, 0x0000, 0x0000 ); // b3 00 00 82 ff ff 00 00 00 00
0x2140    MoveScriptToEnd( entity_id = 0x01 ); // 1c 00 01
0x2143    WaitUntilAnimationComplete(); // 41
0x2144    Wait( 0x01 ); // 22 00 01
0x2147    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x2153    JumpIf( ( bu[ script + 0x001f ] < 0x00000068 ) == false )To( 0x2176 ); // 05 d5 1f 7d 68 00 18 7f 02 18 00
0x215e    ( bu[ script + 0x001f ] += 0x00000004 ); // 05 d5 1f 7d 04 00 32 7f
0x2166    ( bu[ script + 0x0020 ] += 0x00000004 ); // 05 d5 20 7d 04 00 32 7f
0x216e    ( bu[ script + 0x0021 ] += 0x00000004 ); // 05 d5 21 7d 04 00 32 7f
0x2176    ( hu[ script + 0x0024 ] -= 0x00000008 ); // 05 dd 24 7d 08 00 33 7f
0x217e    JumpIf( ( hu[ script + 0x0024 ] > 0x00000000 ) == true )To( 0x2144 ); // 05 dd 24 7d 00 00 19 7f 03 bb ff
0x2189    [ script + 0x0024 ] = h( 0x00000000 ); // 05 dd 24 7d 00 00 2c 7f
0x2191    CallFuncc142c( 0x11, 0x00 ); // 5b 00 11 00
0x2195    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x21a1    Wait( 0x01 ); // 22 00 01
0x21a4    0x8f( entity_id = 0xff, bu[ script + 0x001f ], bu[ script + 0x0020 ], bu[ script + 0x0021 ] ); // 8f 0e ff d5 1f 7f d5 20 7f d5 21 7f
0x21b0    Wait( 0x0a ); // 22 00 0a
0x21b3    CallFuncc0df4( 0x012c, 0x0096, 0x08, 0x08 ); // 6f 00 2c 01 96 00 08 08
0x21bb    Wait( 0x08 ); // 22 00 08
0x21be    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x21c6    JumpTo( 0x27c1 ); // 01 f8 05
0x21c9    [ script + 0x001a ] = b( 0x00000002 ); // 05 d5 1a 7d 02 00 2c 7f
0x21d1    Wait( 0x01 ); // 22 00 01
0x21d4    Wait( 0x05 ); // 22 00 05
0x21d7    SetEntityRotateToEntity( entity_id = 0x16, steps = 0x10 ); // 51 00 16 10
0x21db    WaitUntilRotationComplete(); // 50
0x21dc    Wait( 0x01 ); // 22 00 01
0x21df    [ 0x8007aef0 + 0x0015 ] = h( 0x00000001 ); // 05 dc 15 7d 01 00 2c 7f
0x21e7    0xb4( hu[ 0x8007aef0 + 0x0015 ] ); // b4 01 dc 15 7f
0x21ec    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000000 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 00 00 2c 2c 2c 2c 7f
0x21fd    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x2205    JumpTo( 0x2220 ); // 01 18 00
0x2208    JumpIf( CallFunc4b85c( h[ script + 0x0008 ] ) == false )To( 0x221b ); // 05 d9 08 6b 7f 02 0b 00
0x2210    ( h[ script + 0x000a ] |= ( 0x00000001 << h[ script + 0x0008 ] ) ); // 05 d9 0a 7d 01 00 d9 08 16 3f 7f
0x221b    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x2220    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x2208 ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x222b    JumpIf( 0x00000001 == false )To( 0x223b ); // 05 7d 01 00 7f 02 08 00
0x2233    ( h[ script + 0x000c ] |= 0x00000001 ); // 05 d9 0c 7d 01 00 3f 7f
0x223b    JumpIf( 0x00000000 == false )To( 0x224d ); // 05 7d 00 00 7f 02 0a 00
0x2243    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x224d    JumpIf( 0x00000000 == false )To( 0x225f ); // 05 7d 00 00 7f 02 0a 00
0x2255    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x225f    JumpIf( 0x00000000 == false )To( 0x2271 ); // 05 7d 00 00 7f 02 0a 00
0x2267    ( h[ script + 0x000c ] |= 0x00000000 ); // 05 d9 0c 7e 00 00 00 80 3f 7f
0x2271    [ script + 0x000e ] = h( ( h[ script + 0x000a ] XOR h[ script + 0x000c ] ) ); // 05 d9 0e d9 0a d9 0c 25 2c 7f
0x227b    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x2283    JumpTo( 0x229e ); // 01 18 00
0x2286    JumpIf( ( ( h[ script + 0x000e ] >> h[ script + 0x0008 ] ) & 0x00000001 ) == false )To( 0x2299 ); // 05 d9 0e d9 08 17 7d 01 00 24 7f 02 05 00
0x2294    PartyRemove( character_id = h[ script + 0x0008 ] ); // dd 01 d9 08 7f
0x2299    ( h[ script + 0x0008 ]++ ); // 05 d9 08 04 7f
0x229e    JumpIf( ( h[ script + 0x0008 ] <= 0x0000000b ) == true )To( 0x2286 ); // 05 d9 08 7d 0b 00 1a 7f 03 dd ff
0x22a9    JumpIf( ( CallFunc4b85c( 0x00000000 ) == 0x00000000 ) == false )To( 0x22bf ); // 05 7d 00 00 6b 7d 00 00 20 7f 02 09 00
0x22b6    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d 00 00 6d 2c 7f
0x22bf    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x22d5 ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x22cc    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x22d5    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x22eb ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x22e2    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x22eb    JumpIf( ( CallFunc4b85c( 0x0000ffff ) == 0x00000000 ) == false )To( 0x2301 ); // 05 7d ff ff 6b 7d 00 00 20 7f 02 09 00
0x22f8    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x08 ); // 05 c5 93 7d ff ff 6d 2c 7f
0x2301    [ 0x8007aef0 + 0x002f ] = b( 0x00000000 ); // 05 f4 2f 01 7d 00 00 2c 7f
0x230a    [ script + 0x0008 ] = h( [ script + 0x000a ] = h( [ script + 0x000c ] = h( [ script + 0x000e ] = h( 0x00000063 ) ) ) ); // 05 d9 08 d9 0a d9 0c d9 0e 7d 63 00 2c 2c 2c 2c 7f
0x231b    JumpIf( 0x00000001 == false )To( 0x2331 ); // 05 7d 01 00 7f 02 0e 00
0x2323    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x2329    [ script + 0x0008 ] = h( 0x00000000 ); // 05 d9 08 7d 00 00 2c 7f
0x2331    JumpIf( 0x00000000 == false )To( 0x2347 ); // 05 7d 00 00 7f 02 0e 00
0x2339    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x233f    [ script + 0x000a ] = h( 0x0000ffff ); // 05 d9 0a 7d ff ff 2c 7f
0x2347    JumpIf( 0x00000000 == false )To( 0x235d ); // 05 7d 00 00 7f 02 0e 00
0x234f    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x2355    [ script + 0x000c ] = h( 0x0000ffff ); // 05 d9 0c 7d ff ff 2c 7f
0x235d    JumpIf( 0x00000000 == false )To( 0x2373 ); // 05 7d 00 00 7f 02 0e 00
0x2365    ( bu[ 0x8007aef0 + 0x002f ]++ ); // 05 f4 2f 01 04 7f
0x236b    [ script + 0x000e ] = h( 0x0000ffff ); // 05 d9 0e 7d ff ff 2c 7f
0x2373    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 c5 95 c5 96 c5 97 7d 00 00 2c 2c 2c 2c 7f
0x2384    JumpIf( ( h[ script + 0x0008 ] != 0x00000063 ) == false )To( 0x23a3 ); // 05 d9 08 7d 63 00 21 7f 02 14 00
0x238f    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x0008 ] ) == 0x00000000 ) == false )To( 0x23a3 ); // 05 d9 08 52 7d 00 00 20 7f 02 08 00
0x239b    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x10 ); // 05 c5 94 7d 01 00 2c 7f
0x23a3    JumpIf( ( h[ script + 0x000a ] != 0x00000063 ) == false )To( 0x23c2 ); // 05 d9 0a 7d 63 00 21 7f 02 14 00
0x23ae    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000a ] ) == 0x00000000 ) == false )To( 0x23c2 ); // 05 d9 0a 52 7d 00 00 20 7f 02 08 00
0x23ba    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x20 ); // 05 c5 95 7d 01 00 2c 7f
0x23c2    JumpIf( ( h[ script + 0x000c ] != 0x00000063 ) == false )To( 0x23e1 ); // 05 d9 0c 7d 63 00 21 7f 02 14 00
0x23cd    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000c ] ) == 0x00000000 ) == false )To( 0x23e1 ); // 05 d9 0c 52 7d 00 00 20 7f 02 08 00
0x23d9    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x40 ); // 05 c5 96 7d 01 00 2c 7f
0x23e1    JumpIf( ( h[ script + 0x000e ] != 0x00000063 ) == false )To( 0x2400 ); // 05 d9 0e 7d 63 00 21 7f 02 14 00
0x23ec    JumpIf( ( GetCurrentHpForCharacter( h[ script + 0x000e ] ) == 0x00000000 ) == false )To( 0x2400 ); // 05 d9 0e 52 7d 00 00 20 7f 02 08 00
0x23f8    [ script + 0x0012 ] = b( b[ script + 0x0012 ] | 0x80 ); // 05 c5 97 7d 01 00 2c 7f
0x2400    JumpIf( ( ( (bu[ script + 0x0012 ] >> 0x07) & 1 + ( (bu[ script + 0x0012 ] >> 0x06) & 1 + ( (bu[ script + 0x0012 ] >> 0x05) & 1 + (bu[ script + 0x0012 ] >> 0x04) & 1 ) ) ) == bu[ 0x8007aef0 + 0x002f ] ) == false )To( 0x2478 ); // 05 c5 94 c5 95 14 c5 96 14 c5 97 14 f4 2f 01 20 7f 02 64 00
0x2414    JumpIf( ( ( h[ script + 0x0008 ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x04) & 1 == 0x00000001 ) ) == false )To( 0x242d ); // 05 d9 08 7d 63 00 21 c5 94 7d 01 00 20 27 7f 02 07 00
0x2426    CharacterSetHP( character_id = h[ script + 0x0008 ], hp = 0x0001 ); // f1 01 d9 08 7f 01 00
0x242d    JumpIf( ( ( h[ script + 0x000a ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x05) & 1 == 0x00000001 ) ) == false )To( 0x2446 ); // 05 d9 0a 7d 63 00 21 c5 95 7d 01 00 20 27 7f 02 07 00
0x243f    CharacterSetHP( character_id = h[ script + 0x000a ], hp = 0x0001 ); // f1 01 d9 0a 7f 01 00
0x2446    JumpIf( ( ( h[ script + 0x000c ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x06) & 1 == 0x00000001 ) ) == false )To( 0x245f ); // 05 d9 0c 7d 63 00 21 c5 96 7d 01 00 20 27 7f 02 07 00
0x2458    CharacterSetHP( character_id = h[ script + 0x000c ], hp = 0x0001 ); // f1 01 d9 0c 7f 01 00
0x245f    JumpIf( ( ( h[ script + 0x000e ] != 0x00000063 ) && ( (bu[ script + 0x0012 ] >> 0x07) & 1 == 0x00000001 ) ) == false )To( 0x2478 ); // 05 d9 0e 7d 63 00 21 c5 97 7d 01 00 20 27 7f 02 07 00
0x2471    CharacterSetHP( character_id = h[ script + 0x000e ], hp = 0x0001 ); // f1 01 d9 0e 7f 01 00
0x2478    CharacterRemoveStatuses( character_id = 0x00, status_mask = 0x7f ); // d9 00 00 7f
0x247c    CharacterRemoveStatuses( character_id = 0x01, status_mask = 0x7f ); // d9 00 01 7f
0x2480    CharacterRemoveStatuses( character_id = 0x03, status_mask = 0x7f ); // d9 00 03 7f
0x2484    CharacterRemoveStatuses( character_id = 0x02, status_mask = 0x7f ); // d9 00 02 7f
0x2488    CharacterRemoveStatuses( character_id = 0x04, status_mask = 0x7f ); // d9 00 04 7f
0x248c    CharacterRemoveStatuses( character_id = 0x05, status_mask = 0x7f ); // d9 00 05 7f
0x2490    CharacterRemoveStatuses( character_id = 0x07, status_mask = 0x7f ); // d9 00 07 7f
0x2494    CharacterRemoveStatuses( character_id = 0x06, status_mask = 0x7f ); // d9 00 06 7f
0x2498    CharacterRemoveStatuses( character_id = 0x08, status_mask = 0x7f ); // d9 00 08 7f
0x249c    JumpIf( CallFunc4b85c( 0x00000005 ) == false )To( 0x24b0 ); // 05 7d 05 00 6b 7f 02 0b 00
0x24a5    [ 0x8007aef0 + 0x0004 ] = b( 0x00000001 ); // 05 d4 04 7d 01 00 2c 7f
0x24ad    JumpTo( 0x24b8 ); // 01 08 00
0x24b0    [ 0x8007aef0 + 0x0004 ] = b( 0x00000000 ); // 05 d4 04 7d 00 00 2c 7f
0x24b8    JumpIf( ( ( ( hu[ 0x8007aef0 + 0x0013 ] >> 0x00000000 ) & 0x00000001 ) == 0x00000000 ) == false )To( 0x24da ); // 05 dc 13 7d 00 00 17 7d 01 00 24 7d 00 00 20 7f 02 0f 00
0x24cb    CharacterInit( character_id = 0x00, type = 0x01, preset_id = 0xff, 0x09, 0x00 ); // fe 00 00 01 ff 09 00
0x24d2    ( hu[ 0x8007aef0 + 0x0013 ] |= 0x00000001 ); // 05 dc 13 7d 01 00 3f 7f
0x24da    [ 0x8007aef0 + 0x0011 ] = b( 0x00000000 ); // 05 d4 11 7d 00 00 2c 7f
0x24e2    [ 0x8007aef0 + 0x0012 ] = b( 0x00000001 ); // 05 d4 12 7d 01 00 2c 7f
0x24ea    CharacterSetName( character_id = 0x00, string_id = 0x0012 ); // de 00 00 12 00
0x24ef    CharacterInit( character_id = 0x00, type = 0x00, preset_id = 0xff, 0x09, 0x00 ); // fe 00 00 00 ff 09 00
0x24f6    Wait( 0x05 ); // 22 00 05
0x24f9    0x75( 0x01, 0x00 ); // 75 00 01 00
0x24fd    Wait( 0x0a ); // 22 00 0a
0x2500    ( bu[ 0x8007aef0 + 0x0006 ] |= 0x00000001 ); // 05 d4 06 7d 01 00 3f 7f
0x2508    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x250d    JumpTo( 0x251b ); // 01 0b 00
0x2510    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2518    Wait( 0x01 ); // 22 00 01
0x251b    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2510 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2526    JumpTo( 0x252c ); // 01 03 00
0x2529    Wait( 0x01 ); // 22 00 01
0x252c    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2529 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2537    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x253f    JumpTo( 0x27c1 ); // 01 7f 02
0x2542    Wait( 0x07 ); // 22 00 07
0x2545    PlayEntityAnimation( animation_id = 0x0a11 ); // 40 00 11 0a
0x2549    0x1fSync( 0x02, 0x80, 0x0029 ); // 1f 00 02 80 29 00
0x254f    WaitUntilAnimationComplete(); // 41
0x2550    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2558    JumpTo( 0x27c1 ); // 01 66 02
0x255b    [ script + 0x001a ] = b( 0x00000004 ); // 05 d5 1a 7d 04 00 2c 7f
0x2563    Wait( 0x01 ); // 22 00 01
0x2566    PlayEntityAnimation( animation_id = 0x0aa6 ); // 40 00 a6 0a
0x256a    WaitUntilAnimationComplete(); // 41
0x256b    SetEntityCollisionFlags( flags = 0x07 ); // 47 00 07
0x256e    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2573    JumpTo( 0x2581 ); // 01 0b 00
0x2576    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x257e    Wait( 0x01 ); // 22 00 01
0x2581    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2576 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x258c    JumpTo( 0x2592 ); // 01 03 00
0x258f    Wait( 0x01 ); // 22 00 01
0x2592    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x258f ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x259d    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x25a5    JumpTo( 0x27c1 ); // 01 19 02
0x25a8    [ script + 0x001a ] = b( 0x00000002 ); // 05 d5 1a 7d 02 00 2c 7f
0x25b0    Wait( 0x01 ); // 22 00 01
0x25b3    Wait( 0x03 ); // 22 00 03
0x25b6    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x25bb    JumpTo( 0x25c9 ); // 01 0b 00
0x25be    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x25c6    Wait( 0x01 ); // 22 00 01
0x25c9    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x25be ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x25d4    JumpTo( 0x25da ); // 01 03 00
0x25d7    Wait( 0x01 ); // 22 00 01
0x25da    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x25d7 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x25e5    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x25ed    JumpTo( 0x27c1 ); // 01 d1 01
0x25f0    0x1fSync( 0x02, 0x80, 0x002b ); // 1f 00 02 80 2b 00
0x25f6    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x25fe    JumpTo( 0x27c1 ); // 01 c0 01
0x2601    [ script + 0x001a ] = b( 0x00000005 ); // 05 d5 1a 7d 05 00 2c 7f
0x2609    Wait( 0x01 ); // 22 00 01
0x260c    Wait( 0x0a ); // 22 00 0a
0x260f    [ script + 0x002b ] = b( 0x00000001 ); // 05 d5 2b 7d 01 00 2c 7f
0x2617    CallFuncc0df4( 0x00b2, 0x0096, 0x10, 0x08 ); // 6f 00 b2 00 96 00 10 08
0x261f    CallDynamic8006794c_1c_83c( 0xd000, 0x0125, 0x000000, 0x48, 0x7d ); // c8 00 00 d0 25 01 00 00 00 48 7d
0x262a    CallFuncc18d4( 0x00, 0x00, 0x04 ); // 65 00 00 00 04
0x262f    CallFuncc17f0( 0x00, 0x0100 ); // 61 00 00 00 01
0x2634    Wait( 0x05 ); // 22 00 05
0x2637    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x0000fd44, 0x00000064 ), steps = 0x20 ); // 56 01 7d 44 fd 7d 64 00 5d 7f 20
0x2642    WaitUntilRotationComplete(); // 50
0x2643    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2648    JumpTo( 0x2656 ); // 01 0b 00
0x264b    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2653    Wait( 0x01 ); // 22 00 01
0x2656    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x264b ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2661    JumpTo( 0x2667 ); // 01 03 00
0x2664    Wait( 0x01 ); // 22 00 01
0x2667    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2664 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2672    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x267a    JumpTo( 0x27c1 ); // 01 44 01
0x267d    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x2680    JumpTo( 0x27c1 ); // 01 3e 01
0x2683    [ script + 0x001a ] = b( 0x00000005 ); // 05 d5 1a 7d 05 00 2c 7f
0x268b    Wait( 0x01 ); // 22 00 01
0x268e    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2691    SetEntityPositionByXZ( x = 0x012c, z = 0x005a ); // 1d 00 2c 01 5a 00
0x2697    SetEntityRotation( rotation = 0x40 ); // 36 00 40
0x269a    SetEntityData54( animation_id = 0x0a17 ); // 33 00 17 0a
0x269e    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x26a4    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x26aa    CallFuncaba98( 0x10, 0x0a99, 0x0004, 0x0392 ); // 88 00 10 99 0a 04 00 92 03
0x26b3    CallFuncaba98( 0x11, 0x0a99, 0x0004, 0x039b ); // 88 00 11 99 0a 04 00 9b 03
0x26bc    CallFuncaba98( 0x12, 0x0a99, 0x0004, 0x0001 ); // 88 00 12 99 0a 04 00 01 00
0x26c5    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x26cb    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x26d1    CallFuncaba98( 0x10, 0x0a99, 0x000d, 0x0392 ); // 88 00 10 99 0a 0d 00 92 03
0x26da    CallFuncaba98( 0x11, 0x0a99, 0x000d, 0x039b ); // 88 00 11 99 0a 0d 00 9b 03
0x26e3    CallFuncaba98( 0x12, 0x0a99, 0x000d, 0x0001 ); // 88 00 12 99 0a 0d 00 01 00
0x26ec    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x26ef    Wait( 0x03 ); // 22 00 03
0x26f2    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x26f7    JumpTo( 0x2705 ); // 01 0b 00
0x26fa    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2702    Wait( 0x01 ); // 22 00 01
0x2705    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x26fa ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2710    JumpTo( 0x2716 ); // 01 03 00
0x2713    Wait( 0x01 ); // 22 00 01
0x2716    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2713 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2721    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2729    JumpTo( 0x27c1 ); // 01 95 00
0x272c    [ script + 0x001a ] = b( 0x00000005 ); // 05 d5 1a 7d 05 00 2c 7f
0x2734    Wait( 0x01 ); // 22 00 01
0x2737    Wait( 0x16 ); // 22 00 16
0x273a    0x1fSync( 0x02, 0x80, 0x002e ); // 1f 00 02 80 2e 00
0x2740    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2745    JumpTo( 0x2753 ); // 01 0b 00
0x2748    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2750    Wait( 0x01 ); // 22 00 01
0x2753    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2748 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x275e    JumpTo( 0x2764 ); // 01 03 00
0x2761    Wait( 0x01 ); // 22 00 01
0x2764    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2761 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x276f    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2777    JumpTo( 0x27c1 ); // 01 47 00
0x277a    [ script + 0x001a ] = b( 0x00000004 ); // 05 d5 1a 7d 04 00 2c 7f
0x2782    Wait( 0x01 ); // 22 00 01
0x2785    Wait( 0x0a ); // 22 00 0a
0x2788    PlayEntityAnimation( animation_id = 0x0a38 ); // 40 00 38 0a
0x278c    WaitUntilAnimationComplete(); // 41
0x278d    SetEntityData54( animation_id = 0x00c8 ); // 33 00 c8 00
0x2791    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x00000384, 0x00000078 ), steps = 0x20 ); // 56 01 7d 84 03 7d 78 00 5d 7f 20
0x279c    WaitUntilRotationComplete(); // 50
0x279d    SetEntityCollision( 0x0a, solid_radius = 0x0a, talk_radius = 0x0a ); // 4b 00 0a 0a 0a
0x27a2    SetEntityData5c( 0x3c ); // 26 00 3c
0x27a5    ResetEntityData30_50_63_78(); // 25
0x27a6    MoveToPosition( x = 0x0384, y = 0x0078 ); // 23 00 84 03 78 00
0x27ac    ResetEntityData30_50_63_78(); // 25
0x27ad    MoveToPosition( x = 0x06a4, y = 0x0104 ); // 23 00 a4 06 04 01
0x27b3    JumpTo( 0x27b9 ); // 01 03 00
0x27b6    Wait( 0x01 ); // 22 00 01
0x27b9    JumpIf( 0x00000001 == true )To( 0x27b6 ); // 05 7d 01 00 7f 03 f5 ff
0x27c1    Wait( 0x01 ); // 22 00 01
0x27c4    JumpTo( 0x1a83 ); // 01 bc f2

SCRIPT: script_id = 0x0c
script = w[8007aecc];
0x27c7    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( h[ 0x8007aef0 + 0x00dc ], h[ 0x8007aef0 + 0x00de ] ), steps = 0x10 ); // 56 01 d8 dc d8 de 5d 7f 10
0x27d0    WaitUntilRotationComplete(); // 50
0x27d1    JumpIf( ( bu[ 0x8007aef0 + 0x00e2 ] == 0x00000000 ) == false )To( 0x28df ); // 05 d4 e2 7d 00 00 20 7f 02 03 01
0x27dc    JumpIf( ( h[ 0x8007aef0 + 0x00e0 ] == 0x0000752f ) == false )To( 0x27f0 ); // 05 d8 e0 7d 2f 75 20 7f 02 09 00
0x27e7    0x1fSync( 0x07, 0x00, 0x0006 ); // 1f 00 07 00 06 00
0x27ed    JumpTo( 0x28df ); // 01 ef 00
0x27f0    JumpIf( ( h[ 0x8007aef0 + 0x00e0 ] >= 0x000003e8 ) == false )To( 0x284a ); // 05 d8 e0 7d e8 03 1b 7f 02 4f 00
0x27fb    CallDynamic8006794c_1c_83c( 0xd000, 0x006c, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 6c 00 00 00 00 80 7d
0x2806    [ 0x8007aef0 + 0x00e4 ] = h( ( 0x000003e8 - h[ 0x8007aef0 + 0x00e0 ] ) ); // 05 d8 e4 d8 e0 7d e8 03 15 2c 7f
0x2811    JumpIf( ( ( w[w[w[8006794c] + 1c] + 560] + h[ 0x8007aef0 + 0x00e4 ] ) > 0x0098967f ) == false )To( 0x282e ); // 05 d8 e4 7a 06 14 7e 7f 96 98 00 19 7f 02 0d 00
0x2821    [ 0x8007aef0 + 0x00e4 ] = h( ( w[w[w[8006794c] + 1c] + 560] - 0x0098967f ) ); // 05 d8 e4 7e 7f 96 98 00 7a 06 15 2c 7f
0x282e    0xce( h[ 0x8007aef0 + 0x00e4 ] ); // ce 01 d8 e4 7f
0x2833    Set8007bba8( 0x00, h[ 0x8007aef0 + 0x00e4 ] ); // 66 02 00 d8 e4 7f
0x2839    0x1fSync( 0x07, 0x00, 0x0006 ); // 1f 00 07 00 06 00
0x283f    [ 0x8007aef0 + 0x00e2 ] = b( 0x00000001 ); // 05 d4 e2 7d 01 00 2c 7f
0x2847    JumpTo( 0x28df ); // 01 95 00
0x284a    JumpIf( ( ( 0x64stack( h[ 0x8007aef0 + 0x00e0 ] ) < 0x00000063 ) && ( h[ 0x8007aef0 + 0x00e0 ] < 0x00000200 ) ) == false )To( 0x2885 ); // 05 d8 e0 64 7d 63 00 18 d8 e0 7d 00 02 18 27 7f 02 28 00
0x285d    CallDynamic8006794c_1c_83c( 0xd000, 0x006c, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 6c 00 00 00 00 80 7d
0x2868    [ 0x8007aef0 + 0x00e2 ] = b( 0x00000001 ); // 05 d4 e2 7d 01 00 2c 7f
0x2870    Set8007bba8( 0x00, h[ 0x8007aef0 + 0x00e0 ] ); // 66 02 00 d8 e0 7f
0x2876    0x48( h[ 0x8007aef0 + 0x00e0 ], 0x01 ); // 48 01 d8 e0 7f 01
0x287c    0x1fSync( 0x07, 0x00, 0x0004 ); // 1f 00 07 00 04 00
0x2882    JumpTo( 0x28df ); // 01 5a 00
0x2885    JumpIf( ( ( h[ 0x8007aef0 + 0x00e0 ] >= 0x00000200 ) && ( Count80083248() < 0x00000064 ) ) == false )To( 0x28bf ); // 05 d8 e0 7d 00 02 1b 7a 13 7d 64 00 18 27 7f 02 28 00
0x2897    CallDynamic8006794c_1c_83c( 0xd000, 0x006c, 0x000000, 0x80, 0x7d ); // c8 00 00 d0 6c 00 00 00 00 80 7d
0x28a2    [ 0x8007aef0 + 0x00e2 ] = b( 0x00000001 ); // 05 d4 e2 7d 01 00 2c 7f
0x28aa    Set8007bba8( 0x00, h[ 0x8007aef0 + 0x00e0 ] ); // 66 02 00 d8 e0 7f
0x28b0    0x48( h[ 0x8007aef0 + 0x00e0 ], 0x01 ); // 48 01 d8 e0 7f 01
0x28b6    0x1fSync( 0x07, 0x00, 0x0005 ); // 1f 00 07 00 05 00
0x28bc    JumpTo( 0x28df ); // 01 20 00
0x28bf    Set8007bba8( 0x00, h[ 0x8007aef0 + 0x00e0 ] ); // 66 02 00 d8 e0 7f
0x28c5    JumpIf( ( h[ 0x8007aef0 + 0x00e0 ] < 0x00000200 ) == false )To( 0x28d9 ); // 05 d8 e0 7d 00 02 18 7f 02 09 00
0x28d0    0x1fSync( 0x07, 0x00, 0x0008 ); // 1f 00 07 00 08 00
0x28d6    JumpTo( 0x28df ); // 01 06 00
0x28d9    0x1fSync( 0x07, 0x00, 0x0009 ); // 1f 00 07 00 09 00
0x28df    Return(); // 04

SCRIPT: script_id = 0x0d
script = w[8007aecc];
0x28e0    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( h[ 0x8007aef0 + 0x00dc ], h[ 0x8007aef0 + 0x00de ] ), steps = 0x10 ); // 56 01 d8 dc d8 de 5d 7f 10
0x28e9    WaitUntilRotationComplete(); // 50
0x28ea    0x1fSync( 0x00, 0x00, 0x0028 ); // 1f 00 00 00 28 00
0x28f0    Return(); // 04



Akari

  • *
  • Posts: 766
    • View Profile
Re: Final Fantasy IX scripts.
« Reply #3 on: 2011-03-14 11:12:27 »
Final part. )
Stupid limitations to 65535 characters )

Code: [Select]

ENTITY: entity_id = 0x16
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x28fe    [ script + 0x0000 ] = h( 0x00000613 ); // 05 d9 00 7d 13 06 2c 7f
0x2906    [ script + 0x0004 ] = h( 0x00000124 ); // 05 d9 04 7d 24 01 2c 7f
0x290e    [ script + 0x0006 ] = h( 0x00000040 ); // 05 d9 06 7d 40 00 2c 7f
0x2916    [ script + 0x0002 ] = h( 0x00000000 ); // 05 d9 02 7d 00 00 2c 7f
0x291e    Set32and34inEntityStruct( 0x006b, 0x57 ); // 2f 00 6b 00 57
0x2923    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x292b    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x2930    SetEntityData54( animation_id = 0x01d6 ); // 33 00 d6 01
0x2934    SetEntityData56( animation_id = 0x02f9 ); // 34 00 f9 02
0x2938    SetEntityData58( animation_id = 0x0069 ); // 35 00 69 00
0x293c    SetEntityData4c( animation_id = 0x0068 ); // 7a 00 68 00
0x2940    SetEntityData4e( animation_id = 0x006b ); // 7b 00 6b 00
0x2944    SetEntityCollision( 0x14, solid_radius = 0x14, talk_radius = 0x1e ); // 4b 00 14 14 1e
0x2949    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x294f    SetEntityData6a_6b( 0x60, 0x3d ); // 8b 00 60 3d
0x2953    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x2958    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x295b    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x295e    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x295f    JumpSwitch( bu[ script + 0x0018 ] )( case 0x0003: jump_to:0x2981)( case 0x0004: jump_to:0x2ba7)( case 0x0005: jump_to:0x29c1)( case 0x0006: jump_to:0x2a36)( case 0x0007: jump_to:0x2ba7)( case 0x0008: jump_to:0x2ba7)( case 0x0009: jump_to:0x2a6d)( case 0x000a: jump_to:0x2a8a)( case 0x000b: jump_to:0x2ada)( case 0x000c: jump_to:0x2ae0)( case 0x000d: jump_to:0x2b30)( case 0x000e: jump_to:0x2b73)( default: jump_to:0x2ba7); // 05 d5 18 7f 0b 0c 03 00 43 02 1d 00 43 02 5d 00 d2 00 43 02 43 02 09 01 26 01 76 01 7c 01 cc 01 0f 02
0x2981    0x1fSync( 0x03, 0x80, 0x0027 ); // 1f 00 03 80 27 00
0x2987    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x298c    JumpTo( 0x299a ); // 01 0b 00
0x298f    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2997    Wait( 0x01 ); // 22 00 01
0x299a    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x298f ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x29a5    JumpTo( 0x29ab ); // 01 03 00
0x29a8    Wait( 0x01 ); // 22 00 01
0x29ab    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x29a8 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x29b6    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x29be    JumpTo( 0x2ba7 ); // 01 e6 01
0x29c1    [ script + 0x001a ] = b( 0x00000003 ); // 05 d5 1a 7d 03 00 2c 7f
0x29c9    Wait( 0x01 ); // 22 00 01
0x29cc    CallDynamic8006794c_1c_83c( 0xd000, 0x0125, 0x000000, 0xb7, 0x7d ); // c8 00 00 d0 25 01 00 00 00 b7 7d
0x29d7    CallFuncc18d4( 0x01, 0x00, 0x04 ); // 65 00 01 00 04
0x29dc    CallFuncc17f0( 0x01, 0x0100 ); // 61 00 01 00 01
0x29e1    Wait( 0x08 ); // 22 00 08
0x29e4    Wait( 0x11 ); // 22 00 11
0x29e7    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x29ea    SetEntityData5c( 0x20 ); // 26 00 20
0x29ed    Wait( 0x0a ); // 22 00 0a
0x29f0    ResetEntityData30_50_63_78(); // 25
0x29f1    MoveToPosition( x = 0x02de, y = 0x007d ); // 23 00 de 02 7d 00
0x29f7    SetEntityRotateToEntity( entity_id = 0x11, steps = 0x20 ); // 51 00 11 20
0x29fb    WaitUntilRotationComplete(); // 50
0x29fc    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2a01    JumpTo( 0x2a0f ); // 01 0b 00
0x2a04    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2a0c    Wait( 0x01 ); // 22 00 01
0x2a0f    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2a04 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2a1a    JumpTo( 0x2a20 ); // 01 03 00
0x2a1d    Wait( 0x01 ); // 22 00 01
0x2a20    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2a1d ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2a2b    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2a33    JumpTo( 0x2ba7 ); // 01 71 01
0x2a36    PlayEntityAnimation( animation_id = 0x07b0 ); // 40 00 b0 07
0x2a3a    WaitUntilAnimationComplete(); // 41
0x2a3b    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2a40    JumpTo( 0x2a4e ); // 01 0b 00
0x2a43    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2a4b    Wait( 0x01 ); // 22 00 01
0x2a4e    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2a43 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2a59    JumpTo( 0x2a5f ); // 01 03 00
0x2a5c    Wait( 0x01 ); // 22 00 01
0x2a5f    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2a5c ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2a6a    JumpTo( 0x2ba7 ); // 01 3a 01
0x2a6d    0x20Async( 0x03, 0x80, 0x002c ); // 20 00 03 80 2c 00
0x2a73    PlayEntityAnimation( animation_id = 0x0082 ); // 40 00 82 00
0x2a77    WaitUntilAnimationComplete(); // 41
0x2a78    PlayEntityAnimation( animation_id = 0x00c6 ); // 40 00 c6 00
0x2a7c    0x54( 0x03 ); // 54 00 03
0x2a7f    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2a87    JumpTo( 0x2ba7 ); // 01 1d 01
0x2a8a    WaitUntilAnimationComplete(); // 41
0x2a8b    JumpTo( 0x2a91 ); // 01 03 00
0x2a8e    Wait( 0x01 ); // 22 00 01
0x2a91    JumpIf( ( bu[ script + 0x002b ] == 0x00000000 ) == true )To( 0x2a8e ); // 05 d5 2b 7d 00 00 20 7f 03 f2 ff
0x2a9c    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x0000fd44, 0x00000064 ), steps = 0x20 ); // 56 01 7d 44 fd 7d 64 00 5d 7f 20
0x2aa7    WaitUntilRotationComplete(); // 50
0x2aa8    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2aad    JumpTo( 0x2abb ); // 01 0b 00
0x2ab0    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2ab8    Wait( 0x01 ); // 22 00 01
0x2abb    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2ab0 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2ac6    JumpTo( 0x2acc ); // 01 03 00
0x2ac9    Wait( 0x01 ); // 22 00 01
0x2acc    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2ac9 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2ad7    JumpTo( 0x2ba7 ); // 01 cd 00
0x2ada    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x2add    JumpTo( 0x2ba7 ); // 01 c7 00
0x2ae0    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2ae3    SetEntityPositionByXZ( x = 0x0075, z = 0xfdd5 ); // 1d 00 75 00 d5 fd
0x2ae9    SetEntityRotation( rotation = 0x80 ); // 36 00 80
0x2aec    SetEntityData54( animation_id = 0x0426 ); // 33 00 26 04
0x2af0    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x2af3    Wait( 0x03 ); // 22 00 03
0x2af6    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2afb    JumpTo( 0x2b09 ); // 01 0b 00
0x2afe    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2b06    Wait( 0x01 ); // 22 00 01
0x2b09    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2afe ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2b14    JumpTo( 0x2b1a ); // 01 03 00
0x2b17    Wait( 0x01 ); // 22 00 01
0x2b1a    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2b17 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2b25    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2b2d    JumpTo( 0x2ba7 ); // 01 77 00
0x2b30    Wait( 0x16 ); // 22 00 16
0x2b33    0x1fSync( 0x03, 0x80, 0x002e ); // 1f 00 03 80 2e 00
0x2b39    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2b3e    JumpTo( 0x2b4c ); // 01 0b 00
0x2b41    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2b49    Wait( 0x01 ); // 22 00 01
0x2b4c    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2b41 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2b57    JumpTo( 0x2b5d ); // 01 03 00
0x2b5a    Wait( 0x01 ); // 22 00 01
0x2b5d    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2b5a ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2b68    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2b70    JumpTo( 0x2ba7 ); // 01 34 00
0x2b73    Wait( 0x0f ); // 22 00 0f
0x2b76    PlayEntityAnimation( animation_id = 0x0425 ); // 40 00 25 04
0x2b7a    WaitUntilAnimationComplete(); // 41
0x2b7b    SetEntityData54( animation_id = 0x01d6 ); // 33 00 d6 01
0x2b7f    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x00000384, 0x00000078 ), steps = 0x20 ); // 56 01 7d 84 03 7d 78 00 5d 7f 20
0x2b8a    WaitUntilRotationComplete(); // 50
0x2b8b    Wait( 0x0a ); // 22 00 0a
0x2b8e    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x2b93    SetEntityData5c( 0x3c ); // 26 00 3c
0x2b96    ResetEntityData30_50_63_78(); // 25
0x2b97    MoveToPosition( x = 0x0384, y = 0x0078 ); // 23 00 84 03 78 00
0x2b9d    ResetEntityData30_50_63_78(); // 25
0x2b9e    MoveToPosition( x = 0x06a4, y = 0x0104 ); // 23 00 a4 06 04 01
0x2ba4    MoveScriptToEnd( entity_id = 0xff ); // 1c 00 ff
0x2ba7    Wait( 0x01 ); // 22 00 01
0x2baa    JumpTo( 0x295f ); // 01 b2 fd




ENTITY: entity_id = 0x17
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x2bba    [ script + 0x0000 ] = h( 0x00000613 ); // 05 d9 00 7d 13 06 2c 7f
0x2bc2    [ script + 0x0004 ] = h( 0x00000124 ); // 05 d9 04 7d 24 01 2c 7f
0x2bca    [ script + 0x0006 ] = h( 0x00000040 ); // 05 d9 06 7d 40 00 2c 7f
0x2bd2    [ script + 0x0002 ] = h( 0x00000000 ); // 05 d9 02 7d 00 00 2c 7f
0x2bda    Set32and34inEntityStruct( 0x006d, 0x64 ); // 2f 00 6d 00 64
0x2bdf    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x2be7    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x2bec    SetEntityData54( animation_id = 0x01da ); // 33 00 da 01
0x2bf0    SetEntityData56( animation_id = 0x016f ); // 34 00 6f 01
0x2bf4    SetEntityData58( animation_id = 0x016d ); // 35 00 6d 01
0x2bf8    SetEntityData4c( animation_id = 0x0170 ); // 7a 00 70 01
0x2bfc    SetEntityData4e( animation_id = 0x016c ); // 7b 00 6c 01
0x2c00    SetEntityCollision( 0x14, solid_radius = 0x14, talk_radius = 0x1e ); // 4b 00 14 14 1e
0x2c05    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x2c0b    SetEntityData6a_6b( 0x60, 0x3d ); // 8b 00 60 3d
0x2c0f    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2c12    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x2c17    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x2c18    JumpSwitch( bu[ script + 0x0018 ] )( case 0x0005: jump_to:0x2c36)( case 0x0006: jump_to:0x2c8e)( case 0x0007: jump_to:0x2de7)( case 0x0008: jump_to:0x2de7)( case 0x0009: jump_to:0x2de7)( case 0x000a: jump_to:0x2cc8)( case 0x000b: jump_to:0x2d17)( case 0x000c: jump_to:0x2d1d)( case 0x000d: jump_to:0x2d70)( case 0x000e: jump_to:0x2db3)( default: jump_to:0x2de7); // 05 d5 18 7f 0b 0a 05 00 ca 01 19 00 71 00 ca 01 ca 01 ca 01 ab 00 fa 00 00 01 53 01 96 01
0x2c36    SetEntityData5c( 0x2d ); // 26 00 2d
0x2c39    Wait( 0x08 ); // 22 00 08
0x2c3c    Wait( 0x0f ); // 22 00 0f
0x2c3f    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2c42    ResetEntityData30_50_63_78(); // 25
0x2c43    MoveToPosition( x = 0x04aa, y = 0x00c0 ); // 23 00 aa 04 c0 00
0x2c49    ResetEntityData30_50_63_78(); // 25
0x2c4a    MoveToPosition( x = 0x027d, y = 0xfedf ); // 23 00 7d 02 df fe
0x2c50    ResetEntityData30_50_63_78(); // 25
0x2c51    MoveToPosition( x = 0x018d, y = 0xfea3 ); // 23 00 8d 01 a3 fe
0x2c57    SetEntityRotateToEntity( entity_id = 0x11, steps = 0x20 ); // 51 00 11 20
0x2c5b    WaitUntilRotationComplete(); // 50
0x2c5c    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2c61    JumpTo( 0x2c6f ); // 01 0b 00
0x2c64    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2c6c    Wait( 0x01 ); // 22 00 01
0x2c6f    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2c64 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2c7a    JumpTo( 0x2c80 ); // 01 03 00
0x2c7d    Wait( 0x01 ); // 22 00 01
0x2c80    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2c7d ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2c8b    JumpTo( 0x2de7 ); // 01 59 01
0x2c8e    PlayEntityAnimation( animation_id = 0x0441 ); // 40 00 41 04
0x2c92    WaitUntilAnimationComplete(); // 41
0x2c93    SetEntityCollisionFlags( flags = 0x07 ); // 47 00 07
0x2c96    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2c9b    JumpTo( 0x2ca9 ); // 01 0b 00
0x2c9e    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2ca6    Wait( 0x01 ); // 22 00 01
0x2ca9    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2c9e ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2cb4    JumpTo( 0x2cba ); // 01 03 00
0x2cb7    Wait( 0x01 ); // 22 00 01
0x2cba    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2cb7 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2cc5    JumpTo( 0x2de7 ); // 01 1f 01
0x2cc8    JumpTo( 0x2cce ); // 01 03 00
0x2ccb    Wait( 0x01 ); // 22 00 01
0x2cce    JumpIf( ( bu[ script + 0x002b ] == 0x00000000 ) == true )To( 0x2ccb ); // 05 d5 2b 7d 00 00 20 7f 03 f2 ff
0x2cd9    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x0000fd44, 0x00000064 ), steps = 0x20 ); // 56 01 7d 44 fd 7d 64 00 5d 7f 20
0x2ce4    WaitUntilRotationComplete(); // 50
0x2ce5    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2cea    JumpTo( 0x2cf8 ); // 01 0b 00
0x2ced    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2cf5    Wait( 0x01 ); // 22 00 01
0x2cf8    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2ced ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2d03    JumpTo( 0x2d09 ); // 01 03 00
0x2d06    Wait( 0x01 ); // 22 00 01
0x2d09    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2d06 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2d14    JumpTo( 0x2de7 ); // 01 d0 00
0x2d17    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x2d1a    JumpTo( 0x2de7 ); // 01 ca 00
0x2d1d    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2d20    SetEntityPositionByXZ( x = 0x0301, z = 0xfef1 ); // 1d 00 01 03 f1 fe
0x2d26    SetEntityRotation( rotation = 0x48 ); // 36 00 48
0x2d29    SetEntityData5f( 0x00 ); // 55 00 00
0x2d2c    SetEntityData54( animation_id = 0x0444 ); // 33 00 44 04
0x2d30    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x2d33    Wait( 0x03 ); // 22 00 03
0x2d36    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2d3b    JumpTo( 0x2d49 ); // 01 0b 00
0x2d3e    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2d46    Wait( 0x01 ); // 22 00 01
0x2d49    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2d3e ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2d54    JumpTo( 0x2d5a ); // 01 03 00
0x2d57    Wait( 0x01 ); // 22 00 01
0x2d5a    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2d57 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2d65    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2d6d    JumpTo( 0x2de7 ); // 01 77 00
0x2d70    Wait( 0x0b ); // 22 00 0b
0x2d73    0x1fSync( 0x05, 0x80, 0x002e ); // 1f 00 05 80 2e 00
0x2d79    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2d7e    JumpTo( 0x2d8c ); // 01 0b 00
0x2d81    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2d89    Wait( 0x01 ); // 22 00 01
0x2d8c    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2d81 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2d97    JumpTo( 0x2d9d ); // 01 03 00
0x2d9a    Wait( 0x01 ); // 22 00 01
0x2d9d    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2d9a ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2da8    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x2db0    JumpTo( 0x2de7 ); // 01 34 00
0x2db3    Wait( 0x0a ); // 22 00 0a
0x2db6    PlayEntityAnimation( animation_id = 0x0445 ); // 40 00 45 04
0x2dba    WaitUntilAnimationComplete(); // 41
0x2dbb    SetEntityData54( animation_id = 0x01da ); // 33 00 da 01
0x2dbf    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x00000384, 0x000000a0 ), steps = 0x20 ); // 56 01 7d 84 03 7d a0 00 5d 7f 20
0x2dca    WaitUntilRotationComplete(); // 50
0x2dcb    Wait( 0x1e ); // 22 00 1e
0x2dce    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x2dd3    SetEntityData5c( 0x3c ); // 26 00 3c
0x2dd6    ResetEntityData30_50_63_78(); // 25
0x2dd7    MoveToPosition( x = 0x0384, y = 0x00a0 ); // 23 00 84 03 a0 00
0x2ddd    ResetEntityData30_50_63_78(); // 25
0x2dde    MoveToPosition( x = 0x06a4, y = 0x0104 ); // 23 00 a4 06 04 01
0x2de4    MoveScriptToEnd( entity_id = 0xff ); // 1c 00 ff
0x2de7    Wait( 0x01 ); // 22 00 01
0x2dea    JumpTo( 0x2c18 ); // 01 2b fe




ENTITY: entity_id = 0x18
SCRIPT: script_id = 0x00
script = w[8007aecc];
0x2dfa    [ script + 0x0000 ] = h( 0x00000613 ); // 05 d9 00 7d 13 06 2c 7f
0x2e02    [ script + 0x0004 ] = h( 0x00000124 ); // 05 d9 04 7d 24 01 2c 7f
0x2e0a    [ script + 0x0006 ] = h( 0x00000040 ); // 05 d9 06 7d 40 00 2c 7f
0x2e12    [ script + 0x0002 ] = h( 0x00000000 ); // 05 d9 02 7d 00 00 2c 7f
0x2e1a    Set32and34inEntityStruct( 0x155b, 0x57 ); // 2f 00 5b 15 57
0x2e1f    SetEntityPositionByXZ( x = h[ script + 0x0000 ], z = h[ script + 0x0004 ] ); // 1d 03 d9 00 7f d9 04 7f
0x2e27    SetEntityRotation( rotation = h[ script + 0x0006 ] ); // 36 01 d9 06 7f
0x2e2c    SetEntityData54( animation_id = 0x01ce ); // 33 00 ce 01
0x2e30    SetEntityData56( animation_id = 0x1469 ); // 34 00 69 14
0x2e34    SetEntityData58( animation_id = 0x1466 ); // 35 00 66 14
0x2e38    SetEntityData4c( animation_id = 0x1467 ); // 7a 00 67 14
0x2e3c    SetEntityData4e( animation_id = 0x1468 ); // 7b 00 68 14
0x2e40    SetEntityCollision( 0x14, solid_radius = 0x14, talk_radius = 0x1e ); // 4b 00 14 14 1e
0x2e45    SetEntityData7c_7d_7e_7f( 0x0e, 0x10, 0x12, 0x14 ); // 86 00 0e 10 12 14
0x2e4b    SetEntityData6a_6b( 0x60, 0x3d ); // 8b 00 60 3d
0x2e4f    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2e52    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x2e57    Return(); // 04

SCRIPT: script_id = 0x01
script = w[8007aecc];
0x2e58    JumpSwitch( bu[ script + 0x0018 ] )( case 0x0005: jump_to:0x2e76)( case 0x0006: jump_to:0x2f12)( case 0x0007: jump_to:0x2ece)( case 0x0008: jump_to:0x3105)( case 0x0009: jump_to:0x3105)( case 0x000a: jump_to:0x2f4d)( case 0x000b: jump_to:0x2f9c)( case 0x000c: jump_to:0x2fa2)( case 0x000d: jump_to:0x308e)( case 0x000e: jump_to:0x30d1)( default: jump_to:0x3105); // 05 d5 18 7f 0b 0a 05 00 a8 02 19 00 b5 00 71 00 a8 02 a8 02 f0 00 3f 01 45 01 31 02 74 02
0x2e76    SetEntityData5c( 0x2d ); // 26 00 2d
0x2e79    Wait( 0x08 ); // 22 00 08
0x2e7c    Wait( 0x06 ); // 22 00 06
0x2e7f    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2e82    ResetEntityData30_50_63_78(); // 25
0x2e83    MoveToPosition( x = 0x04aa, y = 0x00c0 ); // 23 00 aa 04 c0 00
0x2e89    ResetEntityData30_50_63_78(); // 25
0x2e8a    MoveToPosition( x = 0x0318, y = 0x013e ); // 23 00 18 03 3e 01
0x2e90    ResetEntityData30_50_63_78(); // 25
0x2e91    MoveToPosition( x = 0x01a4, y = 0x0258 ); // 23 00 a4 01 58 02
0x2e97    SetEntityRotateToEntity( entity_id = 0x11, steps = 0x20 ); // 51 00 11 20
0x2e9b    WaitUntilRotationComplete(); // 50
0x2e9c    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2ea1    JumpTo( 0x2eaf ); // 01 0b 00
0x2ea4    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2eac    Wait( 0x01 ); // 22 00 01
0x2eaf    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2ea4 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2eba    JumpTo( 0x2ec0 ); // 01 03 00
0x2ebd    Wait( 0x01 ); // 22 00 01
0x2ec0    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2ebd ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2ecb    JumpTo( 0x3105 ); // 01 37 02
0x2ece    0x20Async( 0x05, 0x80, 0x002a ); // 20 00 05 80 2a 00
0x2ed4    PlayEntityAnimation( animation_id = 0x2ed0 ); // 40 00 d0 2e
0x2ed8    WaitUntilAnimationComplete(); // 41
0x2ed9    PlayEntityAnimation( animation_id = 0x2ecc ); // 40 00 cc 2e
0x2edd    0x54( 0x05 ); // 54 00 05
0x2ee0    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2ee5    JumpTo( 0x2ef3 ); // 01 0b 00
0x2ee8    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2ef0    Wait( 0x01 ); // 22 00 01
0x2ef3    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2ee8 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2efe    JumpTo( 0x2f04 ); // 01 03 00
0x2f01    Wait( 0x01 ); // 22 00 01
0x2f04    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2f01 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2f0f    JumpTo( 0x3105 ); // 01 f3 01
0x2f12    WaitUntilAnimationComplete(); // 41
0x2f13    PlayEntityAnimation( animation_id = 0x0448 ); // 40 00 48 04
0x2f17    WaitUntilAnimationComplete(); // 41
0x2f18    SetEntityCollisionFlags( flags = 0x07 ); // 47 00 07
0x2f1b    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2f20    JumpTo( 0x2f2e ); // 01 0b 00
0x2f23    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2f2b    Wait( 0x01 ); // 22 00 01
0x2f2e    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2f23 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2f39    JumpTo( 0x2f3f ); // 01 03 00
0x2f3c    Wait( 0x01 ); // 22 00 01
0x2f3f    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2f3c ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2f4a    JumpTo( 0x3105 ); // 01 b8 01
0x2f4d    JumpTo( 0x2f53 ); // 01 03 00
0x2f50    Wait( 0x01 ); // 22 00 01
0x2f53    JumpIf( ( bu[ script + 0x002b ] == 0x00000000 ) == true )To( 0x2f50 ); // 05 d5 2b 7d 00 00 20 7f 03 f2 ff
0x2f5e    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x0000fd44, 0x00000064 ), steps = 0x20 ); // 56 01 7d 44 fd 7d 64 00 5d 7f 20
0x2f69    WaitUntilRotationComplete(); // 50
0x2f6a    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x2f6f    JumpTo( 0x2f7d ); // 01 0b 00
0x2f72    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x2f7a    Wait( 0x01 ); // 22 00 01
0x2f7d    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x2f72 ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x2f88    JumpTo( 0x2f8e ); // 01 03 00
0x2f8b    Wait( 0x01 ); // 22 00 01
0x2f8e    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x2f8b ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x2f99    JumpTo( 0x3105 ); // 01 69 01
0x2f9c    SetEntityFlagsTo0f( flags = 0x0e ); // 93 00 0e
0x2f9f    JumpTo( 0x3105 ); // 01 63 01
0x2fa2    SetEntityFlagsTo0f( flags = 0x07 ); // 93 00 07
0x2fa5    SetEntityPositionByXZ( x = 0x0245, z = 0x0295 ); // 1d 00 45 02 95 02
0x2fab    SetEntityRotation( rotation = 0x40 ); // 36 00 40
0x2fae    SetEntityData54( animation_id = 0x052c ); // 33 00 2c 05
0x2fb2    SetEntityCollisionFlags( flags = 0x00 ); // 47 00 00
0x2fb5    Wait( 0x03 ); // 22 00 03
0x2fb8    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x2fbe    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x2fc4    CallFuncaba98( 0x10, 0x1469, 0x0007, 0x0392 ); // 88 00 10 69 14 07 00 92 03
0x2fcd    CallFuncaba98( 0x11, 0x1469, 0x0007, 0x039b ); // 88 00 11 69 14 07 00 9b 03
0x2fd6    CallFuncaba98( 0x12, 0x1469, 0x0007, 0x0001 ); // 88 00 12 69 14 07 00 01 00
0x2fdf    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x2fe5    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x2feb    CallFuncaba98( 0x10, 0x1469, 0x0012, 0x0392 ); // 88 00 10 69 14 12 00 92 03
0x2ff4    CallFuncaba98( 0x11, 0x1469, 0x0012, 0x039b ); // 88 00 11 69 14 12 00 9b 03
0x2ffd    CallFuncaba98( 0x12, 0x1469, 0x0012, 0x0001 ); // 88 00 12 69 14 12 00 01 00
0x3006    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x300c    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x3012    CallFuncaba98( 0x10, 0x1466, 0x0006, 0x0392 ); // 88 00 10 66 14 06 00 92 03
0x301b    CallFuncaba98( 0x11, 0x1466, 0x0006, 0x039b ); // 88 00 11 66 14 06 00 9b 03
0x3024    CallFuncaba98( 0x12, 0x1466, 0x0006, 0x0001 ); // 88 00 12 66 14 06 00 01 00
0x302d    CallDynamic8006794c_1c_83c( 0x1208, 0x0392, 0x00, 0x00, 0x00 ); // c5 00 08 12 92 03
0x3033    CallDynamic8006794c_1c_83c( 0x1208, 0x039b, 0x00, 0x00, 0x00 ); // c5 00 08 12 9b 03
0x3039    CallFuncaba98( 0x10, 0x1466, 0x0010, 0x0392 ); // 88 00 10 66 14 10 00 92 03
0x3042    CallFuncaba98( 0x11, 0x1466, 0x0010, 0x039b ); // 88 00 11 66 14 10 00 9b 03
0x304b    CallFuncaba98( 0x12, 0x1466, 0x0010, 0x0001 ); // 88 00 12 66 14 10 00 01 00
0x3054    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x3059    JumpTo( 0x3067 ); // 01 0b 00
0x305c    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x3064    Wait( 0x01 ); // 22 00 01
0x3067    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x305c ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x3072    JumpTo( 0x3078 ); // 01 03 00
0x3075    Wait( 0x01 ); // 22 00 01
0x3078    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x3075 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x3083    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x308b    JumpTo( 0x3105 ); // 01 77 00
0x308e    Wait( 0x21 ); // 22 00 21
0x3091    0x1fSync( 0x04, 0x80, 0x002e ); // 1f 00 04 80 2e 00
0x3097    ( bu[ script + 0x001a ]-- ); // 05 d5 1a 05 7f
0x309c    JumpTo( 0x30aa ); // 01 0b 00
0x309f    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x40 ); // 05 c5 e6 7d 01 00 2c 7f
0x30a7    Wait( 0x01 ); // 22 00 01
0x30aa    JumpIf( ( bu[ script + 0x001a ] > 0x00000000 ) == true )To( 0x309f ); // 05 d5 1a 7d 00 00 19 7f 03 ea ff
0x30b5    JumpTo( 0x30bb ); // 01 03 00
0x30b8    Wait( 0x01 ); // 22 00 01
0x30bb    JumpIf( ( (bu[ script + 0x001c ] >> 0x06) & 1 == 0x00000001 ) == true )To( 0x30b8 ); // 05 c5 e6 7d 01 00 20 7f 03 f2 ff
0x30c6    [ script + 0x001c ] = b( b[ script + 0x001c ] | 0x80 ); // 05 c5 e7 7d 01 00 2c 7f
0x30ce    JumpTo( 0x3105 ); // 01 34 00
0x30d1    Wait( 0x05 ); // 22 00 05
0x30d4    PlayEntityAnimation( animation_id = 0x052f ); // 40 00 2f 05
0x30d8    WaitUntilAnimationComplete(); // 41
0x30d9    SetEntityData54( animation_id = 0x01ce ); // 33 00 ce 01
0x30dd    SetEntityRotateToRotation( rotation = GetCurrentEntityRotationTo( 0x00000384, 0x00000078 ), steps = 0x20 ); // 56 01 7d 84 03 7d 78 00 5d 7f 20
0x30e8    WaitUntilRotationComplete(); // 50
0x30e9    Wait( 0x28 ); // 22 00 28
0x30ec    SetEntityCollision( 0x01, solid_radius = 0x01, talk_radius = 0x01 ); // 4b 00 01 01 01
0x30f1    SetEntityData5c( 0x3c ); // 26 00 3c
0x30f4    ResetEntityData30_50_63_78(); // 25
0x30f5    MoveToPosition( x = 0x0384, y = 0x012c ); // 23 00 84 03 2c 01
0x30fb    ResetEntityData30_50_63_78(); // 25
0x30fc    MoveToPosition( x = 0x06a4, y = 0x0104 ); // 23 00 a4 06 04 01
0x3102    MoveScriptToEnd( entity_id = 0xff ); // 1c 00 ff
0x3105    Wait( 0x01 ); // 22 00 01
0x3108    JumpTo( 0x2e58 ); // 01 4d fd


Bosola

  • Fire hazard!
  • *
  • Posts: 1752
    • View Profile
    • My YouTube Channel
Re: Final Fantasy IX scripts.
« Reply #4 on: 2011-03-14 19:54:19 »
Slightly tangential, but where is the dialog data stored, and in what format?

Akari

  • *
  • Posts: 766
    • View Profile
Re: Final Fantasy IX scripts.
« Reply #5 on: 2011-03-14 21:19:54 »
Slightly tangential, but where is the dialog data stored, and in what format?

Texts in dir 3

+04 [][][][] number of texts
next block of texts offsets and something 0x4 bytes each.
+00 [][]     offset to text starting from start of this block.
+02 []       width?
+03 []       height?
next block - textes itself in FFIX format.

Texts not directly inserted in fields. Its separate language pack.
As I understand texts shown in field with opcode 0x1fSync and 0x20Async.

kruci

  • *
  • Posts: 105
    • View Profile
Re: Final Fantasy IX scripts.
« Reply #6 on: 2011-03-16 23:24:08 »
If I correctly remember, than main dialog format is something like this
Code: [Select]
0      4B    number of dialogs
4      8B    first dialog structure
12     8B    next dialog structure
...
dialog structure
0      2B    pointer to sizes script
2      2B    size of dialog text window (something like 12 bites X-size, 4bites Y size * 16)
4      2B    pointer to dialog text
6      2B    number of lines in dialog text

Sizes script is some structure saying that there are opcodes in text,
and width of text values from those opcodes will be added to 'size of dialog text window'.
(Opcodes represent Items, names. Window size is without items, names opcodes. Real width of items, names will be added to precomputed dialog size.)

Well, something like that.
To add more fun, there are opcodes with 'length' parametes, used to center texts.


Nice work decoding script, quite big list!