8
« 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.
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
+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
???