Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- arch n64.cpu
- endian msb
- //output "", create
- include "LIB\N64.inc"
- include "LIB\macros.inc"
- origin 0x0
- insert "Super Mario 64 (J) [!].z64"
- // Title Screen
- origin 0xF0DE0
- Asciiz("TASK3")
- origin 0xF0DE8
- Asciiz(" JPN")
- // All Stars Yellow
- origin 0xAC4F8
- beq r0, r0, 0xAC51C // 812F14F8 1000
- origin 0x65750
- beq r0, r0, 0x65760 // 812AA750 1000
- //Always Have Special Triple Jump
- //origin 0x26334
- //nop // 8126B334 2400
- //no pipe
- origin 0x2188D0
- dh 0x1D00 //810E8AC0 1D00
- //no wind
- origin 0x105D0
- dh 0x1000 //812555D0 1000
- origin 0x25144
- dh 0x1000 //8126A144 1000
- origin 0x218FA0
- dh 0x1D00 //810E9190 1D00
- //no big balls
- origin 0x21BB68
- dh 0x1D00 //810EBD58 1D00
- //no water
- origin 0x8B5C0
- dh 0x2419 //812D05C0 2419
- origin 0xFD5DC
- dh 0x2419 //81381BCC 2419
- // THIposition
- origin 0x42AA9C
- dh 0x1CDE //8118FB74 1CDE
- dh 0xFE00 //8118FB76 FE00
- dh 0xE76E //8118FB78 E76E
- // change star from 3goombas
- origin 0x42A7C7 //
- db 0x7A
- origin 0x42A7D5 //
- db 0x00
- origin 0x42A7DA //
- dh 0x3E1C
- // change 3goombas(star) position
- origin 0x42A7C8
- dh 0xED00 //8118FCE0 ED00
- dh 0xF4DA //8118FCE2 F4DA
- dh 0x1933 //8118FCE4 1933
- // No Music
- origin 0xD747C
- addiu a1, r0, 0x0000 // 8131C47C 2405 & 8131C47E 0000
- // Level Reset
- origin 0x5771C
- nop // 8129C71C 2400
- origin 0x57740
- nop // 8129C740 2400
- // Prevent timer reset at start of Koopa race
- origin 0x460C
- nop // 8124960C 2400
- // Prevent timer stop at end of Koopa race
- origin 0x4630
- nop // 81249630 2400
- // Manual Timer
- origin 0x4658
- sb k1, 0x9EEE (at) // 81249658 A03B
- origin 0x4660
- nop // 81249660 2400
- //origin 0x6014
- //ori t2, t1, 0x0040 // 8024B017 0040
- origin 0x8ADC
- sb r0, 0x00EE (t5) // 8124DADC A1A0 & 8124DADE 00EE
- // Star-Grab Timer
- origin 0x8AD0
- base 0x8024DAD0
- lb at, 0x00 (t5)
- ori t6, r0, 0x7F
- beq r0, at, 0x8024DADC
- origin 0x8AE4
- sh t6, 0xFA (t5)
- // Centisecond
- origin 0x9DAB8
- addiu at, r0, 0x0A
- origin 0x9DAF0
- mult t9, at
- mflo t1
- addiu at, r0, 0x03
- div t1, at
- mflo t2
- sh t2, 0x24 (sp)
- origin 0x9DB50
- addiu a2, a2, 0x71D4
- // Lag Frame Counter
- origin 0xE1a2C
- jal 0x8027EF18 // ROM 0x39F18
- origin 0x3BB0 // Hijack BUF display
- lui t8, 0x8034
- lw t7, 0x9F20 (t8) // Read current value
- lw t6, 0x9F24 (t8) // Read previous value
- sw t7, 0x9F24 (t8) // Copy current value to previous value
- subu t5, t7, t6 // Calculate difference between previous and current
- lw a3, 0x9F28 (t8) // Load sum
- addu a3, a3, t5 // Expect 2 frames difference
- addiu a3, a3, 0xFFFE
- origin 0x3BE4
- sw a3, 0x9F28 (t8) // Save sum
- origin 0x39F18 // RAM 0x8027EF18
- lui t2,0x8034
- lw t3,0x9F20(t2)
- addiu t3, t3, 0x0001
- sw t3, 0x9F20 (t2) // Add 1 to the video interrupt counter
- j 0x80326C18 // Return to normal exception handling path
- nop
- // Lag as Lives
- origin 0x3BE0
- nop
- origin 0x9D86C
- lw a3, 0x9F28 (a3)
- // Hijack Resource Meter
- origin 0x2CFC
- nop
- origin 0x2D04
- jal 0x8027E0AC // ROM 0x390AC
- origin 0x390AC // RAM 0x8027E0AC
- // Constant Writes
- lui t0, 0x8020
- lui t1, 0x8033
- lui t2, 0x8034
- // 120 Star File (Slot 3)
- addiu v0, r0, 0x1F10
- sh v0, 0x7BE8 (t0) // 81207BE8 1F10
- addiu v0, r0, 0xFFCB
- sh v0, 0x7BEA (t0) // 81207BEA FFCB
- addiu v0, r0, 0x7FFF
- sh v0, 0x7BEC (t0) // 81207BEC 7FFF
- sh v0, 0x7BEE (t0) // 81207BEE 7FFF
- addiu v0, r0, 0x7F7F
- sh v0, 0x7BF0 (t0) // 80207BF0 007F & 80207BF1 007F
- sh v0, 0x7BF2 (t0) // 80207BF2 007F & 80207BF3 007F
- sh v0, 0x7BF4 (t0) // 80207BF4 007F & 80207BF5 007F
- sh v0, 0x7BF6 (t0) // 80207BF6 007F & 80207BF7 007F
- sh v0, 0x7BF8 (t0) // 80207BF8 007F & 80207BF9 007F
- sb v0, 0x7BFA (t0) // 80207BFA 007F
- addiu v0, r0, 0x0081
- sb v0, 0x7BFB (t0) // 80207BFB 0081
- addiu v0, r0, 0x0101
- sh v0, 0x7BFC (t0) // 81207BFC 0101
- addiu v0, r0, 0x0301
- sh v0, 0x7BFE (t0) // 81207BFE 0301
- addiu v0, r0, 0x0101
- sh v0, 0x7C00 (t0) // 81207C00 0101
- addiu v0, r0, 0x0181
- sh v0, 0x7C02 (t0) // 81207C02 0181
- // Remove Time Text
- sh r0, 0x71C8 (t1) // 813371C8 0000
- // Conditionals
- lui t0, 0x8020
- lui t1, 0x8028
- lui t2, 0x8033
- lui t3, 0x8034
- lui t4, 0x8036
- // Automatically Reset Timer at Star Select
- lb at, 0x9EC9 (t3)
- addiu v0, r0, 0x0004
- bne at, v0, Skip01 // D0339EC9 0004
- nop
- sh r0, 0x9EFC (t3) // 81339EFC 0000
- Skip01:
- // Level Reset(L)
- lb at, 0x9C31 (t3)
- addiu v0, r0, 0x0020
- bne at, v0, Skip02 // D0339C31 0020
- nop
- addiu v0, r0, 0x0008
- sb v0, 0x9EAE (t3) // 80339EAE 0008
- sh r0, 0x9EF2 (t3) // 81339EF2 0000
- sh r0, 0x9EA8 (t3) // 81339EA8 0000
- addiu v0, r0, 0x0002
- sb v0, 0x9ED8 (t3) // 80339ED8 0002
- addiu v0, r0, 0x0005
- sh v0, 0x00A4 (t4) // 813600A4 0005
- Skip02:
- // Level Reset Camera Fix
- lb at, 0x9ED9 (t3)
- addiu v0, r0, 0x001D
- beq at, v0, Skip03 // D2339ED9 001D
- nop
- addiu v0, r0, 0x0001
- sh v0, 0x6D2A (t1) // 81286D2A 0001
- Skip03:
- bne at, v0, Skip04 // D0339ED9 001D
- nop
- sh r0, 0x6D2A (t1) // 81286D2A 0000
- Skip04:
- // Manual Timer reset on L
- lb at, 0x9C31 (t3)
- addiu v0, r0, 0x0020
- bne at, v0, Skip05 // D0339C31 0020
- nop
- sh r0, 0x9EFC (t3) // 81339EFC 0000
- Skip05:
- // Star Select(L+R)
- lb at, 0x9C31 (t3)
- addiu v0, r0, 0x0030
- bne at, v0, Skip07 // D0339C31 0030
- nop
- addiu v0, r0, 0x0008
- sb v0, 0x9EAE (t3) // 80339EAE 0008
- addiu v0, r0, 0x0004
- sh v0, 0x9EC8 (t3) // 81339EC8 0004
- addiu v0, r0, 0x0002
- sb v0, 0x9ED8 (t3) // 80339ED8 0002
- sh r0, 0x9EFC (t3) // 81339EFC 0000
- sw r0, 0xFED4 (t2) // 8132FED4 0000 & 8132FED6 0000
- lb at, 0x9ED9 (t3)
- addiu v0, r0, 0x000D
- bne at, v0, Not_THI // D0339ED9 000D
- nop
- THI:
- addiu v0, r0, 0x010A
- sh v0, 0x9EDA (t3) // 81339EDA 020A
- beq r0, r0, Skip07
- nop
- Not_THI:
- addiu v0, r0, 0x010A
- sh v0, 0x9EDA (t3) // 81339EDA 010A
- Skip07:
- // Lag Frame Counter
- lb at, 0x9C31 (t3)
- addiu v0, r0, 0x0020
- bne at, v0, Skip14 // D0339C31 0020
- nop
- sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
- Skip14:
- // Lag Frame Counter Reset
- lb at, 0x9EC9 (t3)
- addiu v0, r0, 0x0004
- bne at, v0, Skip15 // D0339EC9 0004
- nop
- sw r0, 0x9F28 (t3) // 81339F28 0000 & 81339F2A 0000
- Skip15:
- // Return
- jr ra
- nop
Advertisement
Add Comment
Please, Sign In to add comment