Line 115: |
Line 115: |
| | 0x96C || 0x4 || Array count for the the following array. | | | 0x96C || 0x4 || Array count for the the following array. |
| |- | | |- |
− | | 0x970 || 0x280 (0x20*0x14) || Array data with the above count, each entry is 0x14-bytes. The emulator loads this from config array "SpecialInst". +0 = u32 emu_pc_addr (config "Addr"), +4 = u32 instruction_value (config "Inst"), +8 = u32 flags. The emulator sets the flags to 0 by default, then compares config "Type" with various strings to determine the value. Flags: bit0 = Type "BreakLoop", bit5 = Type "LoadFrameBuffer", bit6 = Type "Lua_BeforeInst", bit7 = Type "Lua_AfterInst". | + | | 0x970 || 0x280 (0x20*0x14) || Array data with the above count, each entry is 0x14-bytes. The emulator loads this from config array "SpecialInst". +0 = u32 emu_pc_addr (config "Addr"), +4 = u32 instruction_value (config "Inst"), +8 = u32 flags. The emulator sets the flags to 0 by default, then compares config "Type" with various strings to determine the value. Flags: bit0 = Type "BreakLoop", bit5 = Type "LoadFrameBuffer", bit6 = Type "Lua_BeforeInst", bit7 = Type "Lua_AfterInst", bit9 (v2.9.0+) = unknown. |
| | | |
| When the config for {any of the previously mentioned Type strings} is set to value 1, the emulator will also enable the corresponding flags bit mentioned above. Likewise with config "Return", which sets flags bit8. | | When the config for {any of the previously mentioned Type strings} is set to value 1, the emulator will also enable the corresponding flags bit mentioned above. Likewise with config "Return", which sets flags bit8. |
Line 134: |
Line 134: |
| |- | | |- |
| | 0xDFC || 0x4 || Set to 0 by default by the emulator. With config <code>"Cmp", "CodeMultiAddr"</code> this is set to 1. Config <code>"Cmp", "BlockDynamicPC"</code> from [[Super_Mario_3D_All-Stars|SM3DAS]] is not supported. The plugin doesn't use this field, since support for "BlockDynamicPC" was removed. All code which used to use this now assumes val!=2, with code for ==2 being removed. | | | 0xDFC || 0x4 || Set to 0 by default by the emulator. With config <code>"Cmp", "CodeMultiAddr"</code> this is set to 1. Config <code>"Cmp", "BlockDynamicPC"</code> from [[Super_Mario_3D_All-Stars|SM3DAS]] is not supported. The plugin doesn't use this field, since support for "BlockDynamicPC" was removed. All code which used to use this now assumes val!=2, with code for ==2 being removed. |
| + | |- |
| + | | 0xE00 || 0x4 || Added with v2.9.0, see below. |
| |} | | |} |
| | | |
Line 518: |
Line 520: |
| *** .pcb and .nro were updated. | | *** .pcb and .nro were updated. |
| ** "N-4631_e" added (GoldenEye 007) | | ** "N-4631_e" added (GoldenEye 007) |
| + | |
| + | libHovercraftJITPlugin updated two funcs: |
| + | * L_1060, prev ver at L_1060: calling L_4990 (codegen func) is now skipped if u32 controldata+0xE00 is non-zero (this applies to 2 of the 3 calls to L_4990 in this func). |
| + | * L_1d90, prev ver at L_1d80: |
| + | ** The code at 0x1ebc no longer calls L_910 from prev ver. Code was also added for handling bit9 in the array at controldata+0x970. |