mirror of
https://github.com/notwa/mm
synced 2025-02-05 05:23:22 -08:00
finish beta quest basics, ready to shuffle
This commit is contained in:
parent
e6b5fe590f
commit
ad9381adf7
2 changed files with 302 additions and 0 deletions
|
@ -33,9 +33,20 @@ short term:
|
||||||
actually begin shuffling entrances/exits
|
actually begin shuffling entrances/exits
|
||||||
|
|
||||||
long term:
|
long term:
|
||||||
|
fix grottos
|
||||||
|
make bombers' code etc. a function of the filename (if it isn't already)
|
||||||
skip giants cutscenes; give oath when any mask is acquired
|
skip giants cutscenes; give oath when any mask is acquired
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* notes:
|
||||||
|
8016A708 breakpoint hit for reading entrance mod (gets summed immediately after)
|
||||||
|
then calls 80132338 -> 801322C0
|
||||||
|
same thing for calling 80132374
|
||||||
|
|
||||||
|
80132338 calls 801322C0 and returns the scene number
|
||||||
|
801322C0 returns the entrance value in V0 (and the pointer to it in V1)
|
||||||
|
*/
|
||||||
|
|
||||||
.word 0xDEADBEEF
|
.word 0xDEADBEEF
|
||||||
// debugging stuff
|
// debugging stuff
|
||||||
whatever:
|
whatever:
|
||||||
|
@ -133,6 +144,64 @@ load_hook:
|
||||||
sw v0, hash
|
sw v0, hash
|
||||||
jpop 4, s0, s1, ra
|
jpop 4, s0, s1, ra
|
||||||
|
|
||||||
|
prng:
|
||||||
|
// just a reimplementation of the PRNG the game uses.
|
||||||
|
// it's from Numerical Recipes in C, by the way.
|
||||||
|
// random = random*0x19660D + 0x3C6EF35F;
|
||||||
|
lw t0, rng_last
|
||||||
|
li t1, 0x19660D
|
||||||
|
multu t0, t1
|
||||||
|
li t2, 0x3C6EF35F
|
||||||
|
mflo t3
|
||||||
|
addu v0, t3, t2
|
||||||
|
sw v0, rng_last
|
||||||
|
jr
|
||||||
|
nop
|
||||||
|
|
||||||
|
rng_last:
|
||||||
|
.word 0
|
||||||
|
|
||||||
|
.include "entrances.asm"
|
||||||
|
|
||||||
|
shuffle_exit:
|
||||||
|
// a0: exit value
|
||||||
|
// v0: shuffled exit value
|
||||||
|
push 4, ra
|
||||||
|
mov v0, a0
|
||||||
|
li t0, @entries
|
||||||
|
li t1, 0
|
||||||
|
lw t2, crc32
|
||||||
|
sw t2, rng_last
|
||||||
|
la t3, shuffles
|
||||||
|
mov t4, t3
|
||||||
|
-:
|
||||||
|
lhu t5, (t4)
|
||||||
|
beq a0, t5, +
|
||||||
|
nop
|
||||||
|
addi t1, t1, 1
|
||||||
|
beq t1, t0, shuffle_exit_return
|
||||||
|
nop
|
||||||
|
b -
|
||||||
|
addi t4, t4, 4 // 2*sizeof(halfword)
|
||||||
|
+:
|
||||||
|
lhu v0, 2(t4)
|
||||||
|
shuffle_exit_return:
|
||||||
|
jpop 4, ra
|
||||||
|
|
||||||
|
shuffle_hook:
|
||||||
|
push 4, ra
|
||||||
|
jal shuffle_exit
|
||||||
|
nop
|
||||||
|
mov a0, v0
|
||||||
|
pop 4, ra
|
||||||
|
j shuffle_hook_return
|
||||||
|
sw a0, 0(sp) // original code
|
||||||
|
|
||||||
|
.org 0x801322C0
|
||||||
|
j shuffle_hook
|
||||||
|
andi a0, a0, 0xFFFF // original code
|
||||||
|
shuffle_hook_return:
|
||||||
|
|
||||||
.org @starting_exit
|
.org @starting_exit
|
||||||
li t8, 0xD800
|
li t8, 0xD800
|
||||||
li t4, 0xD800
|
li t4, 0xD800
|
||||||
|
|
233
Lua/inject/entrances.asm
Normal file
233
Lua/inject/entrances.asm
Normal file
|
@ -0,0 +1,233 @@
|
||||||
|
[entries]: 228
|
||||||
|
shuffles:
|
||||||
|
// format: from, to
|
||||||
|
// "to" gets filled in when the file is loaded
|
||||||
|
.half 0x0400, 0
|
||||||
|
.half 0x0800, 0
|
||||||
|
.half 0x0E00, 0
|
||||||
|
.half 0x0E10, 0
|
||||||
|
.half 0x1500, 0
|
||||||
|
.half 0x1C00, 0
|
||||||
|
.half 0x2000, 0
|
||||||
|
.half 0x2010, 0
|
||||||
|
.half 0x2020, 0
|
||||||
|
.half 0x2030, 0
|
||||||
|
.half 0x2050, 0
|
||||||
|
.half 0x2060, 0
|
||||||
|
.half 0x20B0, 0
|
||||||
|
.half 0x20C0, 0
|
||||||
|
.half 0x20D0, 0
|
||||||
|
.half 0x20E0, 0
|
||||||
|
.half 0x2200, 0
|
||||||
|
.half 0x2210, 0
|
||||||
|
.half 0x2220, 0
|
||||||
|
.half 0x2230, 0
|
||||||
|
.half 0x2240, 0
|
||||||
|
.half 0x2260, 0
|
||||||
|
.half 0x2270, 0
|
||||||
|
.half 0x22A0, 0
|
||||||
|
.half 0x22C0, 0
|
||||||
|
.half 0x2400, 0
|
||||||
|
.half 0x2600, 0
|
||||||
|
.half 0x2800, 0
|
||||||
|
.half 0x2A00, 0
|
||||||
|
.half 0x2E10, 0
|
||||||
|
.half 0x3200, 0
|
||||||
|
.half 0x3210, 0
|
||||||
|
.half 0x3400, 0
|
||||||
|
.half 0x3410, 0
|
||||||
|
.half 0x3420, 0
|
||||||
|
.half 0x3430, 0
|
||||||
|
.half 0x3440, 0
|
||||||
|
.half 0x3450, 0
|
||||||
|
.half 0x3460, 0
|
||||||
|
.half 0x3600, 0
|
||||||
|
.half 0x3A00, 0
|
||||||
|
.half 0x3C00, 0
|
||||||
|
.half 0x3E00, 0
|
||||||
|
.half 0x3E20, 0
|
||||||
|
.half 0x3E30, 0
|
||||||
|
.half 0x4000, 0
|
||||||
|
.half 0x4010, 0
|
||||||
|
.half 0x4020, 0
|
||||||
|
.half 0x4030, 0
|
||||||
|
.half 0x4050, 0
|
||||||
|
.half 0x4060, 0
|
||||||
|
.half 0x4080, 0
|
||||||
|
.half 0x4090, 0
|
||||||
|
.half 0x40A0, 0
|
||||||
|
.half 0x4200, 0
|
||||||
|
.half 0x4400, 0
|
||||||
|
.half 0x4410, 0
|
||||||
|
.half 0x4600, 0
|
||||||
|
.half 0x4610, 0
|
||||||
|
.half 0x4620, 0
|
||||||
|
.half 0x4630, 0
|
||||||
|
.half 0x4640, 0
|
||||||
|
.half 0x4800, 0
|
||||||
|
.half 0x4A00, 0
|
||||||
|
.half 0x4C00, 0
|
||||||
|
.half 0x4C10, 0
|
||||||
|
.half 0x4C20, 0
|
||||||
|
.half 0x5000, 0
|
||||||
|
.half 0x5010, 0
|
||||||
|
.half 0x5020, 0
|
||||||
|
.half 0x5030, 0
|
||||||
|
.half 0x5040, 0
|
||||||
|
.half 0x5050, 0
|
||||||
|
.half 0x5200, 0
|
||||||
|
.half 0x5400, 0
|
||||||
|
.half 0x5410, 0
|
||||||
|
.half 0x5420, 0
|
||||||
|
.half 0x5430, 0
|
||||||
|
.half 0x5440, 0
|
||||||
|
.half 0x5450, 0
|
||||||
|
.half 0x5460, 0
|
||||||
|
.half 0x5470, 0
|
||||||
|
.half 0x5480, 0
|
||||||
|
.half 0x5490, 0
|
||||||
|
.half 0x54A0, 0
|
||||||
|
.half 0x5600, 0
|
||||||
|
.half 0x5800, 0
|
||||||
|
.half 0x5E00, 0
|
||||||
|
.half 0x5E10, 0
|
||||||
|
.half 0x6000, 0
|
||||||
|
.half 0x6010, 0
|
||||||
|
.half 0x6020, 0
|
||||||
|
.half 0x6030, 0
|
||||||
|
.half 0x6040, 0
|
||||||
|
.half 0x6050, 0
|
||||||
|
.half 0x6060, 0
|
||||||
|
.half 0x6200, 0
|
||||||
|
.half 0x6400, 0
|
||||||
|
.half 0x6800, 0
|
||||||
|
.half 0x6810, 0
|
||||||
|
.half 0x6820, 0
|
||||||
|
.half 0x6830, 0
|
||||||
|
.half 0x6840, 0
|
||||||
|
.half 0x6850, 0
|
||||||
|
.half 0x6860, 0
|
||||||
|
.half 0x6870, 0
|
||||||
|
.half 0x6880, 0
|
||||||
|
.half 0x68C0, 0
|
||||||
|
.half 0x6A00, 0
|
||||||
|
.half 0x6A10, 0
|
||||||
|
.half 0x6A20, 0
|
||||||
|
.half 0x6A30, 0
|
||||||
|
.half 0x6A40, 0
|
||||||
|
.half 0x6A50, 0
|
||||||
|
.half 0x6C00, 0
|
||||||
|
.half 0x7000, 0
|
||||||
|
.half 0x7010, 0
|
||||||
|
.half 0x7020, 0
|
||||||
|
.half 0x7030, 0
|
||||||
|
.half 0x7040, 0
|
||||||
|
.half 0x7050, 0
|
||||||
|
.half 0x7060, 0
|
||||||
|
.half 0x7200, 0
|
||||||
|
.half 0x7400, 0
|
||||||
|
.half 0x7600, 0
|
||||||
|
.half 0x7610, 0
|
||||||
|
.half 0x7A00, 0
|
||||||
|
.half 0x7A10, 0
|
||||||
|
.half 0x7A20, 0
|
||||||
|
.half 0x8000, 0
|
||||||
|
.half 0x8400, 0
|
||||||
|
.half 0x8410, 0
|
||||||
|
.half 0x8420, 0
|
||||||
|
.half 0x8430, 0
|
||||||
|
.half 0x8440, 0
|
||||||
|
.half 0x8450, 0
|
||||||
|
.half 0x8460, 0
|
||||||
|
.half 0x8470, 0
|
||||||
|
.half 0x8480, 0
|
||||||
|
.half 0x8490, 0
|
||||||
|
.half 0x8600, 0
|
||||||
|
.half 0x8620, 0
|
||||||
|
.half 0x8E00, 0
|
||||||
|
.half 0x9000, 0
|
||||||
|
.half 0x9010, 0
|
||||||
|
.half 0x9200, 0
|
||||||
|
.half 0x9210, 0
|
||||||
|
.half 0x9220, 0
|
||||||
|
.half 0x9230, 0
|
||||||
|
.half 0x9250, 0
|
||||||
|
.half 0x9400, 0
|
||||||
|
.half 0x9420, 0
|
||||||
|
.half 0x9430, 0
|
||||||
|
.half 0x9600, 0
|
||||||
|
.half 0x9800, 0
|
||||||
|
.half 0x9A10, 0
|
||||||
|
.half 0x9A20, 0
|
||||||
|
.half 0x9A30, 0
|
||||||
|
.half 0x9A40, 0
|
||||||
|
.half 0x9A60, 0
|
||||||
|
.half 0x9C00, 0
|
||||||
|
.half 0x9E00, 0
|
||||||
|
.half 0xA000, 0
|
||||||
|
.half 0xA010, 0
|
||||||
|
.half 0xA020, 0
|
||||||
|
.half 0xA200, 0
|
||||||
|
.half 0xA400, 0
|
||||||
|
.half 0xA600, 0
|
||||||
|
.half 0xA800, 0
|
||||||
|
.half 0xA810, 0
|
||||||
|
.half 0xAA00, 0
|
||||||
|
.half 0xAA10, 0
|
||||||
|
.half 0xAA20, 0
|
||||||
|
.half 0xAC00, 0
|
||||||
|
.half 0xAC10, 0
|
||||||
|
.half 0xB000, 0
|
||||||
|
.half 0xB010, 0
|
||||||
|
.half 0xB200, 0
|
||||||
|
.half 0xB210, 0
|
||||||
|
.half 0xB220, 0
|
||||||
|
.half 0xB400, 0
|
||||||
|
.half 0xB410, 0
|
||||||
|
.half 0xB420, 0
|
||||||
|
.half 0xBA00, 0
|
||||||
|
.half 0xBC00, 0
|
||||||
|
.half 0xBC10, 0
|
||||||
|
.half 0xC000, 0
|
||||||
|
.half 0xC010, 0
|
||||||
|
.half 0xC200, 0
|
||||||
|
.half 0xCA00, 0
|
||||||
|
.half 0xCE00, 0
|
||||||
|
.half 0xCE30, 0
|
||||||
|
.half 0xD000, 0
|
||||||
|
.half 0xD200, 0
|
||||||
|
.half 0xD210, 0
|
||||||
|
.half 0xD220, 0
|
||||||
|
.half 0xD230, 0
|
||||||
|
.half 0xD240, 0
|
||||||
|
.half 0xD250, 0
|
||||||
|
.half 0xD260, 0
|
||||||
|
.half 0xD270, 0
|
||||||
|
.half 0xD280, 0
|
||||||
|
.half 0xD290, 0
|
||||||
|
.half 0xD2A0, 0
|
||||||
|
.half 0xD2B0, 0
|
||||||
|
.half 0xD400, 0
|
||||||
|
.half 0xD410, 0
|
||||||
|
.half 0xD420, 0
|
||||||
|
.half 0xD430, 0
|
||||||
|
.half 0xD440, 0
|
||||||
|
.half 0xD450, 0
|
||||||
|
.half 0xD460, 0
|
||||||
|
.half 0xD470, 0
|
||||||
|
.half 0xD480, 0
|
||||||
|
.half 0xD600, 0
|
||||||
|
.half 0xD610, 0
|
||||||
|
.half 0xD620, 0
|
||||||
|
.half 0xD630, 0
|
||||||
|
.half 0xD640, 0
|
||||||
|
.half 0xD800, 0
|
||||||
|
.half 0xD810, 0
|
||||||
|
.half 0xD820, 0
|
||||||
|
.half 0xD840, 0
|
||||||
|
.half 0xD850, 0
|
||||||
|
.half 0xD860, 0
|
||||||
|
.half 0xD870, 0
|
||||||
|
.half 0xDA00, 0
|
||||||
|
.half 0xDA10, 0
|
||||||
|
.align
|
Loading…
Add table
Reference in a new issue