From ccdb3b130d25177310b0b3bccae4e27a1e8872fa Mon Sep 17 00:00:00 2001 From: Connor Olding Date: Sun, 3 Jan 2016 04:11:51 -0800 Subject: [PATCH] always spawn any missing objects --- Lua/inject/actor object table mm.asm | 693 -------------------------- Lua/inject/actor object table oot.asm | 474 ------------------ Lua/inject/lips.lua | 3 +- Lua/inject/print.asm | 65 +++ Lua/inject/spawn oot.asm | 4 +- Lua/inject/spawn.asm | 77 +-- 6 files changed, 88 insertions(+), 1228 deletions(-) delete mode 100644 Lua/inject/actor object table mm.asm delete mode 100644 Lua/inject/actor object table oot.asm diff --git a/Lua/inject/actor object table mm.asm b/Lua/inject/actor object table mm.asm deleted file mode 100644 index 19eabfe..0000000 --- a/Lua/inject/actor object table mm.asm +++ /dev/null @@ -1,693 +0,0 @@ -HEX { -00 00 // Player -00 01 // En_Test -00 01 // En_GirlA -00 01 // En_Part -00 01 // En_Light -00 01 // En_Door -00 0C // En_Box -01 28 // En_Pametfrog -00 05 // En_Okuta -00 01 // En_Bom -00 09 // En_Wallmas -00 0A // En_Dodongo -00 0B // En_Firefly -00 01 // En_Horse -00 00 // En_Item00 -00 01 // En_Arrow -00 01 // En_Elf -00 0F // En_Niw -00 12 // En_Tite -00 00 // unset -00 14 // En_Peehat -00 02 // En_Butte -00 01 // En_Insect -00 01 // En_Fish -00 01 // En_Holl -00 17 // En_Dinofos -00 5F // En_Hata -00 19 // En_Zl1 -00 01 // En_Viewer -00 0E // En_Bubble -00 01 // Door_Shutter -00 00 // unset -00 01 // En_Boom -00 01 // En_Torch2 -00 BC // En_Minifrog -00 00 // unset -00 20 // En_St -00 00 // unset -00 00 // En_A_Obj -00 01 // Obj_Wturn -00 01 // En_River_Sound -00 00 // unset -00 01 // En_Ossan -00 00 // unset -00 00 // unset -00 1D // En_Famos -00 00 // unset -00 2A // En_Bombf -00 00 // unset -00 00 // unset -00 30 // En_Am -00 31 // En_Dekubaba -00 01 // En_M_Fire1 -00 01 // En_M_Thunder -00 01 // Bg_Breakwall -00 00 // unset -00 3E // Door_Warp1 -00 80 // Obj_Syokudai -00 96 // Item_B_Heart -00 40 // En_Dekunuts -00 51 // En_Bbfall -00 01 // Arms_Hook -00 51 // En_Bb -01 7E // Bg_Keikoku_Spr -00 00 // unset -00 61 // En_Wood02 -00 00 // unset -00 52 // En_Death -00 52 // En_Minideath -00 00 // unset -00 00 // unset -00 6A // En_Vm -00 01 // Demo_Effect -00 01 // Demo_Kankyo -00 09 // En_Floormas -00 00 // unset -00 75 // En_Rd -00 5C // Bg_F40_Flift -00 00 // Bg_Heavy_Block -00 01 // Obj_Mure -00 20 // En_Sw -00 01 // Object_Kankyo -00 00 // unset -00 00 // unset -00 7D // En_Horse_Link_Child -00 02 // Door_Ana -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 01 // En_Encount1 -00 0C // Demo_Tre_Lgt -00 00 // unset -00 00 // unset -02 80 // En_Encount2 -00 70 // En_Fire_Rock -00 88 // Bg_Ctower_Rot -00 87 // Mir_Ray -00 00 // unset -00 8E // En_Sb -01 28 // En_Bigslime -00 31 // En_Karebaba -00 99 // En_In -00 00 // unset -00 A2 // En_Ru -00 01 // En_Bom_Chu -01 91 // En_Horse_Game_Check -00 AB // En_Rr -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 01 // En_Fr -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -01 24 // En_Fishing -00 03 // Obj_Oshihiki -00 01 // Eff_Dust -00 01 // Bg_Umajump -00 01 // Arrow_Fire -00 01 // Arrow_Ice -00 01 // Arrow_Light -00 01 // Item_Etcetera -00 01 // Obj_Kibako -00 01 // Obj_Tsubo -00 00 // unset -00 D8 // En_Ik -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -01 53 // Demo_Shd -01 34 // En_Dns -00 01 // Elf_Msg -00 03 // En_Honotrap -00 03 // En_Tubo_Trap -00 01 // Obj_Ice_Poly -00 E4 // En_Fz -00 01 // En_Kusa -00 EE // Obj_Bean -01 2A // Obj_Bombiwa -00 03 // Obj_Switch -00 00 // unset -00 ED // Obj_Lift -00 EC // Obj_Hsblock -00 01 // En_Okarina_Tag -00 00 // unset -00 EF // En_Goroiwa -00 00 // unset -00 00 // unset -00 F1 // En_Daiku -00 F2 // En_Nwc -00 01 // Item_Inbox -00 E6 // En_Ge1 -00 01 // Obj_Blockstop -00 01 // En_Sda -00 01 // En_Clear_Tag -00 00 // unset -02 48 // En_Gm -00 F4 // En_Ms -00 F5 // En_Hs -01 7F // Bg_Ingate -00 FC // En_Kanban -00 00 // unset -00 0F // En_Attack_Niw -00 00 // unset -00 00 // unset -00 00 // unset -00 FE // En_Mk -00 FD // En_Owl -00 01 // En_Ishi -01 BA // Obj_Hana -00 F7 // Obj_Lightswitch -00 01 // Obj_Mure2 -00 00 // unset -01 40 // En_Fu -00 00 // unset -00 00 // unset -01 06 // En_Stream -00 01 // En_Mm -00 00 // unset -00 00 // unset -00 01 // En_Weather_Tag -00 C2 // En_Ani -00 00 // unset -02 71 // En_Js -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 01 // En_Okarina_Effect -01 15 // En_Mag -00 01 // Elf_Msg2 -00 5C // Bg_F40_Swlift -00 00 // unset -00 00 // unset -01 1D // En_Kakasi -00 01 // Obj_Makeoshihiki -00 01 // Oceff_Spot -00 00 // unset -00 01 // En_Torch -00 00 // unset -00 01 // Shot_Sun -00 00 // unset -00 00 // unset -00 01 // Obj_Roomtimer -01 27 // En_Ssh -00 00 // unset -00 01 // Oceff_Wipe -00 01 // Oceff_Storm -00 01 // Obj_Demo -01 28 // En_Minislime -00 01 // En_Nutsball -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 01 // Oceff_Wipe2 -00 01 // Oceff_Wipe3 -00 00 // unset -01 32 // En_Dg -00 20 // En_Si -01 B9 // Obj_Comb -01 33 // Obj_Kibako2 -00 00 // unset -00 01 // En_Hs2 -00 01 // Obj_Mure3 -01 40 // En_Tg -00 00 // unset -00 00 // unset -01 41 // En_Wf -01 42 // En_Skb -00 00 // unset -01 43 // En_Gs -00 01 // Obj_Sound -00 06 // En_Crow -00 00 // unset -01 46 // En_Cow -00 00 // unset -00 00 // unset -00 01 // Oceff_Wipe4 -00 00 // unset -00 D0 // En_Zo -00 01 // Obj_Makekinsuta -01 30 // En_Ge3 -00 00 // unset -00 02 // Obj_Hamishi -01 92 // En_Zl4 -00 01 // En_Mm2 -00 00 // unset -00 01 // Door_Spiral -00 00 // unset -00 01 // Obj_Pzlblock -00 64 // Obj_Toge -00 00 // unset -00 30 // Obj_Armos -01 4F // Obj_Boyo -00 00 // unset -00 00 // unset -01 4E // En_Grasshopper -00 00 // unset -00 02 // Obj_Grass -00 02 // Obj_Grass_Carry -00 02 // Obj_Grass_Unit -00 00 // unset -00 00 // unset -01 53 // Bg_Fire_Wall -00 01 // En_Bu -02 3B // En_Encount3 -01 55 // En_Jso -00 ED // Obj_Chikuwa -01 56 // En_Knight -00 01 // En_Warp_tag -00 D7 // En_Aob_01 -00 01 // En_Boj_01 -00 01 // En_Boj_02 -00 01 // En_Boj_03 -00 01 // En_Encount4 -01 10 // En_Bom_Bowl_Man -01 AC // En_Syateki_Man -00 00 // unset -01 57 // Bg_Icicle -00 06 // En_Syateki_Crow -00 01 // En_Boj_04 -00 01 // En_Cne_01 -00 01 // En_Bba_01 -00 DE // En_Bji_01 -01 58 // Bg_Spdweb -00 00 // unset -00 00 // unset -00 01 // En_Mt_tag -01 5A // Boss_01 -01 5B // Boss_02 -01 5C // Boss_03 -01 5D // Boss_04 -01 5E // Boss_05 -01 56 // Boss_06 -01 60 // Boss_07 -00 08 // Bg_Dy_Yoseizo -00 00 // unset -00 01 // En_Boj_05 -00 00 // unset -00 00 // unset -00 01 // En_Sob1 -00 00 // unset -00 00 // unset -00 A1 // En_Go -00 00 // unset -01 61 // En_Raf -01 62 // Obj_Funen -01 63 // Obj_Raillift -01 64 // Bg_Numa_Hana -01 65 // Obj_Flowerpot -01 66 // Obj_Spinyroll -01 CC // Dm_Hina -01 41 // En_Syateki_Wf -00 03 // Obj_Skateblock -01 67 // Obj_Iceblock -01 A6 // En_Bigpamet -00 40 // En_Syateki_Dekunuts -00 01 // Elf_Msg3 -00 BC // En_Fg -01 69 // Dm_Ravine -01 92 // Dm_Sa -01 6A // En_Slime -01 6B // En_Pr -01 6D // Obj_Toudai -01 6D // Obj_Entotu -01 6C // Obj_Bell -00 05 // En_Syateki_Okuta -00 00 // unset -01 6D // Obj_Shutter -01 4B // Dm_Zl -00 01 // En_Elfgrp -01 9F // Dm_Tsg -01 71 // En_Baguo -01 66 // Obj_Vspinyroll -01 6D // Obj_Smork -00 01 // En_Test2 -00 1C // En_Test3 -00 01 // En_Test4 -01 72 // En_Bat -00 01 // En_Sekihi -01 78 // En_Wiz -01 78 // En_Wiz_Brock -01 78 // En_Wiz_Fire -00 01 // Eff_Change -02 6C // Dm_Statue -00 01 // Obj_Fireshield -01 79 // Bg_Ladder -01 7A // En_Mkk -00 01 // Demo_Getitem -00 00 // unset -01 89 // En_Dnb -02 24 // En_Dnh -00 01 // En_Dnk -01 8B // En_Dnq -00 00 // unset -01 7E // Bg_Keikoku_Saku -01 2A // Obj_Hugebombiwa -00 0B // En_Firefly2 -01 81 // En_Rat -01 82 // En_Water_Effect -00 02 // En_Kusa2 -01 53 // Bg_Spout_Fire -00 00 // unset -01 84 // Bg_Dblue_Movebg -00 08 // En_Dy_Extra -01 85 // En_Bal -00 E3 // En_Ginko_Man -01 86 // En_Warp_Uzu -01 87 // Obj_Driftice -01 35 // En_Look_Nuts -00 01 // En_Mushi2 -00 01 // En_Fall -01 07 // En_Mm3 -01 8A // Bg_Crace_Movebg -01 F3 // En_Dno -01 6B // En_Pr2 -01 6B // En_Prz -01 55 // En_Jso2 -00 01 // Obj_Etcetera -01 8D // En_Egol -00 BB // Obj_Mine -00 01 // Obj_Purify -01 8E // En_Tru -01 8F // En_Trt -00 00 // unset -00 00 // unset -00 01 // En_Test5 -00 01 // En_Test6 -01 98 // En_Az -01 8D // En_Estone -01 90 // Bg_Hakugin_Post -01 69 // Dm_Opstage -01 92 // Dm_Stk -01 C8 // Dm_Char00 -01 A2 // Dm_Char01 -01 BE // Dm_Char02 -01 A3 // Dm_Char03 -00 01 // Dm_Char04 -02 13 // Dm_Char05 -01 E6 // Dm_Char06 -02 12 // Dm_Char07 -02 29 // Dm_Char08 -01 EB // Dm_Char09 -01 8C // Obj_Tokeidai -00 00 // unset -01 95 // En_Mnk -01 8D // En_Egblock -01 35 // En_Guard_Nuts -01 90 // Bg_Hakugin_Bombwall -01 97 // Obj_Tokei_Tobira -01 90 // Bg_Hakugin_Elvpole -00 B7 // En_Ma4 -01 99 // En_Twig -01 9B // En_Po_Fusen -00 01 // En_Door_Etc -01 9E // En_Bigokuta -01 E7 // Bg_Icefloe -01 63 // Obj_Ocarinalift -00 01 // En_Time_Tag -01 9F // Bg_Open_Shutter -01 9F // Bg_Open_Spot -01 A0 // Bg_Fu_Kaiten -00 01 // Obj_Aqua -00 01 // En_Elforg -00 0E // En_Elfbub -00 00 // unset -01 A1 // En_Fu_Mato -01 A1 // En_Fu_Kago -01 A3 // En_Osn -00 88 // Bg_Ctower_Gear -01 8F // En_Trt2 -01 A4 // Obj_Tokei_Step -01 A5 // Bg_Lotus -01 A6 // En_Kame -01 B4 // Obj_Takaraya_Wall -01 A0 // Bg_Fu_Mizu -01 E5 // En_Sellnuts -01 A7 // Bg_Dkjail_Ivy -00 00 // unset -01 A8 // Obj_Visiblock -01 29 // En_Takaraya -01 A9 // En_Tsn -01 AA // En_Ds2n -01 AB // En_Fsn -01 AC // En_Shn -00 00 // unset -01 B6 // En_Stop_heishi -01 AD // Obj_Bigicicle -01 E5 // En_Lift_Nuts -01 AF // En_Tk -00 00 // unset -01 B0 // Bg_Market_Step -01 63 // Obj_Lupygamelift -00 01 // En_Test7 -01 B3 // Obj_Lightblock -00 87 // Mir_Ray2 -01 B5 // En_Wdhand -00 01 // En_Gamelupy -00 01 // Bg_Danpei_Movebg -01 B7 // En_Snowwd -01 07 // En_Pm -00 01 // En_Gakufu -00 01 // Elf_Msg4 -00 01 // Elf_Msg5 -00 01 // En_Col_Man -00 75 // En_Talk_Gibud -01 B8 // En_Giant -00 EF // Obj_Snowball -01 BB // Boss_Hakugin -01 44 // En_Gb2 -00 01 // En_Onpuman -01 BF // Bg_Tobira01 -00 01 // En_Tag_Obj -01 C1 // Obj_Dhouse -01 C2 // Obj_Hakaisi -01 C7 // Bg_Hakugin_Switch -00 00 // unset -01 C4 // En_Snowman -00 01 // TG_Sw -01 C5 // En_Po_Sisters -01 C6 // En_Pp -01 BB // En_Hakurock -00 01 // En_Hanabi -00 01 // Obj_Dowsing -00 01 // Obj_Wind -01 32 // En_Racedog -01 0F // En_Kendo_Js -01 C9 // Bg_Botihasira -01 D7 // En_Fish2 -01 CB // En_Pst -01 C3 // En_Poh -01 CD // Obj_Spidertent -01 CE // En_Zoraegg -01 CF // En_Kbt -01 D0 // En_Gg -01 D1 // En_Maruta -00 EF // Obj_Snowball2 -01 D0 // En_Gg2 -01 D2 // Obj_Ghaka -01 D4 // En_Dnp -01 D5 // En_Dai -01 D3 // Bg_Goron_Oyu -01 D6 // En_Kgy -00 01 // En_Invadepoh -01 DF // En_Gk -00 E2 // En_An -00 00 // unset -01 EB // En_Bee -01 EC // En_Ot -01 ED // En_Dragon -01 EE // Obj_Dora -01 F1 // En_Bigpo -01 EE // Obj_Kendo_Kanban -01 F2 // Obj_Hariko -00 01 // En_Sth -01 F4 // Bg_Sinkai_Kabe -01 E0 // Bg_Haka_Curtain -01 F5 // Bg_Kin2_Bombwall -01 F5 // Bg_Kin2_Fence -01 F5 // Bg_Kin2_Picture -01 F5 // Bg_Kin2_Shelf -01 42 // En_Rail_Skb -01 F8 // En_Jg -01 8E // En_Tru_Mt -01 FC // Obj_Um -02 01 // En_Neo_Reeba -02 02 // Bg_Mbar_Chair -00 03 // Bg_Ikana_Block -02 03 // Bg_Ikana_Mirror -02 03 // Bg_Ikana_Rotaryroom -01 84 // Bg_Dblue_Balance -01 84 // Bg_Dblue_Waterfall -02 04 // En_Kaizoku -01 2E // En_Ge2 -00 B7 // En_Ma_Yts -00 A7 // En_Ma_Yto -02 05 // Obj_Tokei_Turret -01 84 // Bg_Dblue_Elevator -01 70 // Obj_Warpstone -02 06 // En_Zog -02 07 // Obj_Rotlift -01 F8 // Obj_Jg_Gakki -02 0C // Bg_Inibs_Movebg -00 D0 // En_Zot -02 0D // Obj_Tree -02 0E // Obj_Y2lift -02 0E // Obj_Y2shutter -02 0E // Obj_Boat -02 50 // Obj_Taru -02 3D // Obj_Hunsui -01 8E // En_Jc_Mato -00 87 // Mir_Ray3 -02 11 // En_Zob -00 01 // Elf_Msg6 -00 01 // Obj_Nozoki -02 3A // En_Toto -00 75 // En_Railgibud -00 DF // En_Baba -00 E3 // En_Suttari -02 16 // En_Zod -02 63 // En_Kujiya -00 A1 // En_Geg -00 01 // Obj_Kinoko -02 18 // Obj_Yasi -00 01 // En_Tanron1 -01 5D // En_Tanron2 -01 5C // En_Tanron3 -02 1E // Obj_Chan -02 20 // En_Zos -00 A1 // En_S_Goro -00 04 // En_Nb -00 E3 // En_Ja -00 5C // Bg_F40_Block -02 22 // Bg_F40_Switch -00 5D // En_Po_Composer -00 FF // En_Guruguru -00 01 // Oceff_Wipe5 -01 B6 // En_Stone_heishi -00 01 // Oceff_Wipe6 -01 E5 // En_Scopenuts -00 06 // En_Scopecrow -00 01 // Oceff_Wipe7 -02 29 // Eff_Kamejima_Wave -02 2A // En_Hg -02 2A // En_Hgo -02 2B // En_Zov -00 07 // En_Ah -02 2C // Obj_Hgdoor -02 03 // Bg_Ikana_Bombwall -02 03 // Bg_Ikana_Ray -02 03 // Bg_Ikana_Shutter -01 E0 // Bg_Haka_Bombwall -01 E0 // Bg_Haka_Tomb -00 01 // En_Sc_Ruppe -02 37 // Bg_Iknv_Doukutu -02 37 // Bg_Iknv_Obj -02 38 // En_Pamera -02 39 // Obj_HsStump -01 2B // En_Hidden_Nuts -00 D0 // En_Zow -00 01 // En_Talk -00 0D // En_Al -00 13 // En_Tab -00 E3 // En_Nimotsu -00 01 // En_Hit_Tag -00 06 // En_Ruppecrow -02 3F // En_Tanron4 -01 5B // En_Tanron5 -02 40 // En_Tanron6 -00 F1 // En_Daiku2 -00 F0 // En_Muto -02 47 // En_Baisen -01 B6 // En_Heishi -01 B6 // En_Demo_heishi -02 41 // En_Dt -02 43 // En_Cha -02 44 // Obj_Dinner -02 46 // Eff_Lastday -02 03 // Bg_Ikana_Dharma -01 E5 // En_Akindonuts -01 BE // Eff_Stk -01 D5 // En_Ig -00 A1 // En_Rg -02 49 // En_Osk -00 01 // En_Sth2 -02 4A // En_Yb -02 4B // En_Rz -00 01 // En_Scopecoin -02 4F // En_Bjt -01 10 // En_Bomjima -01 10 // En_Bomjimb -01 10 // En_Bombers -01 10 // En_Bombers2 -02 80 // En_Bombal -01 B1 // Obj_Moon_Stone -00 01 // Obj_Mu_Pict -02 36 // Bg_Ikninside -02 55 // Eff_Zoraband -02 56 // Obj_Kepn_Koya -02 57 // Obj_Usiyane -02 5B // En_Nnh -02 60 // Obj_Kzsaku -02 61 // Obj_Milk_Bin -02 64 // En_Kitan -02 67 // Bg_Astr_Bombwall -02 36 // Bg_Iknin_Susceil -02 68 // En_Bsb -01 29 // En_Recepgirl -00 22 // En_Thiefbird -01 A9 // En_Jgame_Tsn -00 80 // Obj_Jgame_Light -02 6E // Obj_Yado -02 6F // Demo_Syoten -02 70 // Demo_Moonend -02 7F // Bg_Lbfshot -02 34 // Bg_Last_Bwall -00 15 // En_And -00 01 // En_Invadepoh_Demo -02 73 // Obj_Danpeilift -02 69 // En_Fall2 -00 0D // Dm_Al -00 E2 // Dm_An -00 07 // Dm_Ah -00 04 // Dm_Nb -00 18 // En_Drs -02 41 // En_Ending_Hero -01 85 // Dm_Bal -01 85 // En_Paper -01 42 // En_Hint_Skb -00 01 // Dm_Tag -02 7A // En_Bh -02 47 // En_Ending_Hero2 -00 F0 // En_Ending_Hero3 -01 B6 // En_Ending_Hero4 -00 F1 // En_Ending_Hero5 -00 01 // En_Ending_Hero6 -00 E2 // Dm_Gm -00 01 // Obj_Swprize -00 01 // En_Invisible_Ruppe -02 81 // Obj_Ending -01 2C // En_Rsn -} -.align diff --git a/Lua/inject/actor object table oot.asm b/Lua/inject/actor object table oot.asm deleted file mode 100644 index 62ff9c5..0000000 --- a/Lua/inject/actor object table oot.asm +++ /dev/null @@ -1,474 +0,0 @@ -HEX { -00 00 // Player -00 00 // unset -00 32 // En_Test -00 00 // unset -00 01 // En_GirlA -00 00 // unset -00 00 // unset -00 01 // En_Part -00 01 // En_Light -00 01 // En_Door -00 0E // En_Box -00 0A // Bg_Dy_Yoseizo -00 2C // Bg_Hidan_Firewall -00 01 // En_Poh -00 07 // En_Okuta -00 36 // Bg_Ydan_Sp -00 01 // En_Bom -00 0B // En_Wallmas -00 0C // En_Dodongo -00 0D // En_Firefly -00 1A // En_Horse -00 00 // En_Item00 -00 01 // En_Arrow -00 00 // unset -00 01 // En_Elf -00 13 // En_Niw -00 00 // unset -00 16 // En_Tite -00 17 // En_Reeba -00 18 // En_Peehat -00 02 // En_Butte -00 00 // unset -00 01 // En_Insect -00 01 // En_Fish -00 00 // unset -00 01 // En_Holl -00 40 // En_Scene_Change -00 1B // En_Zf -00 76 // En_Hata -00 19 // Boss_Dodongo -00 1C // Boss_Goma -00 1D // En_Zl1 -00 01 // En_Viewer -00 1E // En_Goma -00 03 // Bg_Pushbox -00 12 // En_Bubble -00 01 // Door_Shutter -00 1F // En_Dodojr -00 19 // En_Bdfire -00 00 // unset -00 01 // En_Boom -00 20 // En_Torch2 -00 21 // En_Bili -00 22 // En_Tp -00 00 // unset -00 24 // En_St -00 25 // En_Bw -00 00 // En_A_Obj -00 26 // En_Eiyer -00 01 // En_River_Sound -00 27 // En_Horse_Normal -00 01 // En_Ossan -00 2A // Bg_Treemouth -00 2B // Bg_Dodoago -00 2C // Bg_Hidan_Dalm -00 2C // Bg_Hidan_Hrock -00 2D // En_Horse_Ganon -00 2C // Bg_Hidan_Rock -00 2C // Bg_Hidan_Rsekizou -00 2C // Bg_Hidan_Sekizou -00 2C // Bg_Hidan_Sima -00 2C // Bg_Hidan_Syoku -00 8A // En_Xc -00 01 // Bg_Hidan_Curtain -00 2F // Bg_Spot00_Hanebasi -00 30 // En_Mb -00 31 // En_Bombf -00 60 // En_Zl2 -00 2C // Bg_Hidan_Fslift -00 35 // En_OE2 -00 36 // Bg_Ydan_Hasi -00 36 // Bg_Ydan_Maruta -00 37 // Boss_Ganondrof -00 00 // unset -00 38 // En_Am -00 39 // En_Dekubaba -00 01 // En_M_Fire1 -00 01 // En_M_Thunder -00 2B // Bg_Ddan_Jd -00 01 // Bg_Breakwall -00 40 // En_Jj -00 46 // En_Horse_Zelda -00 2B // Bg_Ddan_Kd -00 48 // Door_Warp1 -00 A4 // Obj_Syokudai -00 BD // Item_B_Heart -00 4A // En_Dekunuts -00 4D // Bg_Menkuri_Kaiten -00 4D // Bg_Menkuri_Eye -00 56 // En_Vali -00 59 // Bg_Mizu_Movebg -00 59 // Bg_Mizu_Water -00 14 // Arms_Hook -00 5A // En_fHG -00 01 // Bg_Mori_Hineri -00 5D // En_Bb -00 5E // Bg_Toki_Hikari -00 5F // En_Yukabyun -00 5E // Bg_Toki_Swd -00 5A // En_Fhg_Fire -00 01 // Bg_Mjin -00 2C // Bg_Hidan_Kousi -00 5E // Door_Toki -00 2C // Bg_Hidan_Hamstep -00 77 // En_Bird -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 7C // En_Wood02 -00 00 // unset -00 00 // unset -00 00 // unset -00 00 // unset -00 81 // En_Lightbox -00 82 // En_Pu_box -00 00 // unset -00 00 // unset -00 85 // En_Trap -00 01 // En_Arow_Trap -00 86 // En_Vase -00 00 // unset -00 88 // En_Ta -00 89 // En_Tk -00 72 // Bg_Mori_Bigst -00 72 // Bg_Mori_Elevator -00 72 // Bg_Mori_Kaitenkabe -00 72 // Bg_Mori_Rakkatenjo -00 8B // En_Vm -00 01 // Demo_Effect -00 01 // Demo_Kankyo -00 2C // Bg_Hidan_Fwbig -00 0B // En_Floormas -00 97 // En_Heishi1 -00 98 // En_Rd -00 99 // En_Po_Sisters -00 9A // Bg_Heavy_Block -00 99 // Bg_Po_Event -00 01 // Obj_Mure -00 24 // En_Sw -00 9C // Boss_Fd -00 01 // Object_Kankyo -00 9D // En_Du -00 9E // En_Fd -00 A0 // En_Horse_Link_Child -00 02 // Door_Ana -00 A1 // Bg_Spot02_Objects -00 A2 // Bg_Haka -00 01 // Magic_Wind -00 01 // Magic_Fire -00 00 // unset -00 A3 // En_Ru1 -00 A5 // Boss_Fd2 -00 03 // En_Fd_Fire -00 A6 // En_Dh -00 A6 // En_Dha -00 A7 // En_Rl -00 01 // En_Encount1 -00 9D // Demo_Du -00 87 // Demo_Im -00 0E // Demo_Tre_Lgt -00 9E // En_Fw -00 9C // Bg_Vb_Sima -00 9C // En_Vb_Ball -00 01 // Bg_Haka_Megane -00 69 // Bg_Haka_MeganeBG -00 69 // Bg_Haka_Ship -00 01 // Bg_Haka_Sgami -00 00 // unset -00 97 // En_Heishi2 -00 92 // En_Encount2 -00 92 // En_Fire_Rock -00 AC // En_Brob -00 AB // Mir_Ray -00 AE // Bg_Spot09_Obj -00 AF // Bg_Spot18_Obj -00 8C // Boss_Va -00 69 // Bg_Haka_Tubo -00 69 // Bg_Haka_Trap -00 8D // Bg_Haka_Huta -00 01 // Bg_Haka_Zou -00 B1 // Bg_Spot17_Funen -00 01 // En_Syateki_Itm -00 5B // En_Syateki_Man -00 B2 // En_Tana -00 B3 // En_Nb -00 B4 // Boss_Mo -00 B5 // En_Sb -01 5F // En_Bigokuta -00 39 // En_Karebaba -00 96 // Bg_Bdan_Objects -00 BC // Demo_Sa -00 C9 // Demo_Go -00 C0 // En_In -00 C1 // En_Tr -00 C2 // Bg_Spot16_Bombstone -00 00 // unset -00 2C // Bg_Hidan_Kowarerukabe -00 02 // Bg_Bombwall -00 74 // Bg_Spot08_Iceblock -00 CA // En_Ru2 -00 CC // Obj_Dekujr -00 59 // Bg_Mizu_Uzu -00 6A // Bg_Spot06_Objects -00 6B // Bg_Ice_Objects -00 8D // Bg_Haka_Water -00 00 // unset -00 D0 // En_Ma2 -00 01 // En_Bom_Chu -00 01 // En_Horse_Game_Check -00 D3 // Boss_Tw -00 D4 // En_Rr -00 D5 // En_Ba -00 D5 // En_Bx -00 D6 // En_Anubice -00 D6 // En_Anubice_Fire -00 72 // Bg_Mori_Hashigo -00 72 // Bg_Mori_Hashira4 -00 72 // Bg_Mori_Idomizu -01 7A // Bg_Spot16_Doughnut -00 96 // Bg_Bdan_Switch -00 E0 // En_Ma1 -00 E1 // Boss_Ganon -00 E2 // Boss_Sst -00 00 // unset -00 00 // unset -00 E5 // En_Ny -00 E6 // En_Fr -00 15 // Item_Shield -00 6B // Bg_Ice_Shelter -00 01 // En_Ice_Hono -00 DE // Item_Ocarina -00 00 // unset -00 00 // unset -00 01 // Magic_Dark -00 01 // Demo_6K -00 01 // En_Anubice_Tag -00 69 // Bg_Haka_Gate -00 F0 // Bg_Spot15_Saku -01 1F // Bg_Jya_Goroiwa -00 F1 // Bg_Jya_Zurerukabe -00 00 // unset -00 F1 // Bg_Jya_Cobra -00 F1 // Bg_Jya_Kanaami -01 5B // Fishing -00 03 // Obj_Oshihiki -01 81 // Bg_Gate_Shutter -00 01 // Eff_Dust -00 F9 // Bg_Spot01_Fusya -00 F9 // Bg_Spot01_Idohashira -00 F9 // Bg_Spot01_Idomizu -00 A4 // Bg_Po_Syokudai -00 E1 // Bg_Ganon_Otyuka -00 F0 // Bg_Spot15_Rrbox -01 00 // Bg_Umajump -00 00 // unset -00 01 // Arrow_Fire -00 01 // Arrow_Ice -00 01 // Arrow_Light -00 00 // unset -00 00 // unset -00 01 // Item_Etcetera -00 03 // Obj_Kibako -00 01 // Obj_Tsubo -00 01 // En_Wonder_Item -01 06 // En_Ik -01 06 // Demo_Ik -01 0A // En_Skj -01 0A // En_Skjneedle -00 01 // En_G_Switch -00 5A // Demo_Ext -00 01 // Demo_Shd -01 68 // En_Dns -00 01 // Elf_Msg -00 03 // En_Honotrap -00 03 // En_Tubo_Trap -00 01 // Obj_Ice_Poly -01 12 // Bg_Spot03_Taki -01 13 // Bg_Spot07_Taki -01 14 // En_Fz -00 89 // En_Po_Relay -00 6C // Bg_Relay_Objects -00 FE // En_Diving_Game -00 01 // En_Kusa -01 1E // Obj_Bean -01 63 // Obj_Bombiwa -00 00 // unset -00 00 // unset -00 03 // Obj_Switch -01 1B // Obj_Elevator -01 1D // Obj_Lift -01 1C // Obj_Hsblock -00 01 // En_Okarina_Tag -00 01 // En_Yabusame_Mark -01 1F // En_Goroiwa -00 01 // En_Ex_Ruppy -01 21 // En_Toryo -01 22 // En_Daiku -00 00 // unset -01 24 // En_Nwc -01 25 // En_Blkobj -00 01 // Item_Inbox -01 16 // En_Ge1 -00 01 // Obj_Blockstop -00 01 // En_Sda -00 01 // En_Clear_Tag -01 10 // En_Niw_Lady -00 C9 // En_Gm -01 27 // En_Ms -01 28 // En_Hs -01 29 // Bg_Ingate -01 2F // En_Kanban -00 97 // En_Heishi3 -00 13 // En_Syateki_Niw -00 13 // En_Attack_Niw -01 80 // Bg_Spot01_Idosoko -00 BC // En_Sa -00 01 // En_Wonder_Talk -01 30 // Bg_Gjyo_Bridge -01 0F // En_Ds -01 32 // En_Mk -01 60 // En_Bom_Bowl_Man -00 01 // En_Bom_Bowl_Pit -01 31 // En_Owl -00 02 // En_Ishi -00 02 // Obj_Hana -01 2A // Obj_Lightswitch -00 01 // Obj_Mure2 -00 C9 // En_Go -01 33 // En_Fu -00 00 // unset -00 01 // En_Changer -00 F1 // Bg_Jya_Megami -00 F1 // Bg_Jya_Lift -00 F1 // Bg_Jya_Bigmirror -00 F1 // Bg_Jya_Bombchuiwa -00 F1 // Bg_Jya_Amishutter -00 F1 // Bg_Jya_Bombiwa -00 AF // Bg_Spot18_Basket -00 00 // unset -00 E1 // En_Ganon_Organ -01 3A // En_Siofuki -01 3B // En_Stream -00 00 // unset -01 3C // En_Mm -00 01 // En_Ko -00 FF // En_Kz -00 01 // En_Weather_Tag -00 E2 // Bg_Sst_Floor -00 EC // En_Ani -00 01 // En_Ex_Item -01 6C // Bg_Jya_Ironobj -01 44 // En_Js -00 01 // En_Jsjutan -01 45 // En_Cs -00 FB // En_Md -00 01 // En_Hy -00 01 // En_Ganon_Mant -00 01 // En_Okarina_Effect -01 4A // En_Mag -01 4B // Door_Gerudo -00 01 // Elf_Msg2 -01 4C // Demo_Gt -00 6D // En_Po_Field -01 4D // Efc_Erupc -01 56 // Bg_Zg -00 97 // En_Heishi4 -00 60 // En_Zl3 -01 53 // Boss_Ganon2 -01 54 // En_Kakasi -01 55 // En_Takara_Man -00 03 // Obj_Makeoshihiki -00 01 // Oceff_Spot -00 01 // End_Title -00 00 // unset -00 01 // En_Torch -01 5A // Demo_Ec -00 01 // Shot_Sun -00 0A // En_Dy_Extra -00 01 // En_Wonder_Talk2 -01 67 // En_Ge2 -00 01 // Obj_Roomtimer -01 5E // En_Ssh -00 01 // En_Sth -00 01 // Oceff_Wipe -00 01 // Oceff_Storm -00 26 // En_Weiyer -01 61 // Bg_Spot05_Soko -00 F1 // Bg_Jya_1flift -01 6C // Bg_Jya_Haheniron -01 62 // Bg_Spot12_Gate -01 62 // Bg_Spot12_Saku -01 64 // En_Hintnuts -00 01 // En_Nutsball -01 66 // Bg_Spot00_Break -01 68 // En_Shopnuts -00 01 // En_It -01 69 // En_GeldB -00 01 // Oceff_Wipe2 -00 01 // Oceff_Wipe3 -01 6A // En_Niw_Girl -01 6B // En_Dog -00 24 // En_Si -00 01 // Bg_Spot01_Objects2 -00 02 // Obj_Comb -01 6F // Bg_Spot11_Bakudankabe -01 70 // Obj_Kibako2 -00 01 // En_Dnt_Demo -01 71 // En_Dnt_Jiji -00 01 // En_Dnt_Nomal -01 11 // En_Guest -01 78 // Bg_Bom_Guard -01 28 // En_Hs2 -01 79 // Demo_Kekkai -00 74 // Bg_Spot08_Bakudankabe -00 B1 // Bg_Spot17_Bakudankabe -00 00 // unset -00 01 // Obj_Mure3 -01 82 // En_Tg -01 82 // En_Mu -00 C9 // En_Go2 -01 83 // En_Wf -01 84 // En_Skb -01 85 // Demo_Gj -01 86 // Demo_Geff -01 79 // Bg_Gnd_Firemeiro -01 79 // Bg_Gnd_Darkmeiro -01 79 // Bg_Gnd_Soulmeiro -01 79 // Bg_Gnd_Nisekabe -01 79 // Bg_Gnd_Iceblock -01 89 // En_Gb -01 88 // En_Gs -00 59 // Bg_Mizu_Bwall -00 59 // Bg_Mizu_Shutter -01 22 // En_Daiku_Kakariko -01 78 // Bg_Bowl_Wall -00 01 // En_Wall_Tubo -00 6D // En_Po_Desert -00 08 // En_Crow -01 8E // Door_Killer -01 6F // Bg_Spot11_Oasis -00 AF // Bg_Spot18_Futa -00 AF // Bg_Spot18_Shutter -00 D0 // En_Ma3 -01 8B // En_Cow -00 6B // Bg_Ice_Turara -00 6B // Bg_Ice_Shutter -01 54 // En_Kakasi2 -01 54 // En_Kakasi3 -00 01 // Oceff_Wipe4 -00 60 // En_Eg -00 4D // Bg_Menkuri_Nisekabe -00 FE // En_Zo -00 01 // Obj_Makekinsuta -01 69 // En_Ge3 -01 90 // Obj_Timeblock -00 02 // Obj_Hamishi -01 91 // En_Zl4 -01 3C // En_Mm2 -00 03 // Bg_Jya_Block -01 90 // Obj_Warp2block -} -.align diff --git a/Lua/inject/lips.lua b/Lua/inject/lips.lua index 1775789..d25b10c 100644 --- a/Lua/inject/lips.lua +++ b/Lua/inject/lips.lua @@ -428,7 +428,7 @@ local instructions = { POP = {}, JPOP = {}, - ABS = {}, -- BGEZ NOP SUB? + ABS = {}, -- BGEZ NOP SUBU? MUL = {}, -- MULT MFLO --DIV = {}, -- 3 arguments REM = {}, -- 3 arguments @@ -1622,6 +1622,7 @@ function Dumper:add_directive(line, name, a, b) end function Dumper:desym(tok) + -- FIXME: errors can give wrong filename, also off by one if type(tok[2]) == 'number' then return tok[2] elseif tok[1] == 'LABELSYM' then diff --git a/Lua/inject/print.asm b/Lua/inject/print.asm index fbaacf8..ccef64a 100644 --- a/Lua/inject/print.asm +++ b/Lua/inject/print.asm @@ -10,6 +10,35 @@ jr nop +[ObjectSpawn]: 0x80097C00 +[ObjectIndex]: 0x8009812C + +ObjectSpawnWrap: + // keep track of which objects we're spawning + // TODO: reset count on scene change + push 4, ra, 1 + + // stuff for jump-only hook + //li a0, 0x802237C4 + //mov a1, a3 + + //beqi a1, 2, + // don't bother loading gameplay_field_keep + lwu t0, spawn_count + sll t2, t0, 1 + la t1, spawned + addu t1, t1, t2 + addiu t0, t0, 1 + sw t0, spawn_count + sh a1, 0(t1) + jal @ObjectSpawn + nop ++: + jpop 4, ra, 1 +spawn_count: + .word 0 +spawned: + .halfword 0, 0, 0, 0, 0, 0, 0, 0 + // keep track of where we are in the buffer buffer_pos: .word 0 @@ -36,3 +65,39 @@ copy_loop: sw t0, buffer_pos jr nop + +// force objects to load + +/* jump-only hook +.org 0x80098180 + j ObjectSpawnWrap + nop +*/ + +.org @ObjectIndex + // we have space for 22 instructions + push 4, ra, 1 + //sll a1, a1, 0x10 + //sra a1, a1, 0x10 + mov t0, a0 + lbu t1, 8(a0) // remaining items + cl v0 +-: + lh t2, 12(t0) // item's object number + // t2 = abs(t2) + bgez t2, + + nop + subu t2, r0, t2 ++: + beq a1, t2, + + subi t1, t1, 1 + addiu v0, v0, 1 + addi t0, t0, 68 + bnez t1, - + nop + jal ObjectSpawnWrap + nop + //subiu v0, r0, -1 ++: + jpop 4, ra, 1 + // 19 words diff --git a/Lua/inject/spawn oot.asm b/Lua/inject/spawn oot.asm index 208ae6b..73d3076 100644 --- a/Lua/inject/spawn oot.asm +++ b/Lua/inject/spawn oot.asm @@ -1,5 +1,6 @@ [actor_spawn]: 0x80025110 [object_spawn]: 0x800812F0 +[object_index]: 0x80081628 [max_actor_no]: 0x1D6 [global_context]: 0x801C84A0 @@ -19,6 +20,3 @@ [upgrades_2_offset]: 0xA2 .include "spawn.asm" - -actor_object_table: -.include "actor object table oot.asm" diff --git a/Lua/inject/spawn.asm b/Lua/inject/spawn.asm index 4cd4d0c..98a9c89 100644 --- a/Lua/inject/spawn.asm +++ b/Lua/inject/spawn.asm @@ -73,10 +73,7 @@ return: simple_spawn: // args: a0 (actor to spawn) push 4, 9, ra - jal load_object - sw a0, 56(sp) // keep me updated! - bnez v0, simple_spawn_return - lw a2, 56(sp) // keep me updated! + mov a2, a0 li a1, @global_context addi a0, a1, @actor_spawn_offset li t0, @link_actor @@ -106,68 +103,34 @@ simple_spawn: // args: a0 (actor to spawn) sw t9, 0x30(sp) // unknown jal @actor_spawn nop -simple_spawn_return: jpop 4, 9, ra hold_delay: .word 0 -load_object: -// args: a0 (actor number) -// returns v0 (0 if ok, 1 on error) - push 4, s0, ra - li v0, 1 - la t0, actor_object_table - sll t1, a0, 1 - addu t0, t0, t1 - lhu s0, 0(t0) // object number - beqz s0, + - nop - bal is_object_loaded - mov a0, s0 - bnez v0, + +.org @object_index + // we have space for 22 instructions (on debug, 23 on 1.0?) + push 4, ra, 1 + mov t0, a0 + lbu t1, 8(a0) // remaining items cl v0 - li t8, @global_context - li t9, @object_spawn_offset - add a0, t8, t9 - mov a1, s0 - jal @object_spawn - nop -+: - jpop 4, s0, ra - -/* -we'll be dealing with structs like -typedef struct { - uint_ptr region_start; // ? - uint_ptr region_end; // ? - byte loaded_count; // only set in first item - byte loaded_count_alt; // usually fewer than the above - uint16 unknown; - uint16 object_number; - uint16 padding; - uint_ptr start; - uint32 size; - uint32 unknowns[11]; // more pointers and sizes -} loaded_object; // total size: 68 bytes -*/ - -is_object_loaded: -// args: a0 (object number) -// returns v0 (1 if loaded, 0 if not) - push 4 - li t8, @global_context - li t9, @object_spawn_offset - add t0, t8, t9 // current item - lb t1, 8(t0) // remaining items - li v0, 1 -: lh t2, 12(t0) // item's object number - beq a0, t2, + - subi t1, t1, 1 // TODO: double check there's no off-by-one error +// t2 = abs(t2) + bgez t2, + + nop + subu t2, r0, t2 ++: + beq a1, t2, + + subi t1, t1, 1 + addiu v0, v0, 1 addi t0, t0, 68 bnez t1, - nop - cl v0 + // NOTE: this allows object 0002 to load in places it's not meant to. + // this can mess up door graphics (among other things?) + jal object_spawn + nop + //subiu v0, r0, -1 // original code +: - jpop 4 + jpop 4, ra, 1