diff --git a/Makefile b/Makefile index 3915923..4405fad 100644 --- a/Makefile +++ b/Makefile @@ -9,6 +9,7 @@ NoN ?= 0 # 2.08 (Banjo-Tooie, the best game on the N64) # 2.07 (Rocket: Robot on Wheels) # 2.04H (Kirby 64, Smash 64) +# 2.08PM (Paper Mario, this is F3DZEX 2.08J with two instructions changed and renamed to F3DEX2 2.08) # # F3DZEX: # 2.08J (Animal Forest) (Recommended over 2.08I due to a change properly zeroes out $v0) @@ -21,14 +22,16 @@ ARMIPS ?= armips OUTPUT_DIR ?= ./ # List of all microcodes buildable with this codebase -UCODES := F3DEX2_2.08 F3DEX2_2.07 F3DEX2_2.04H \ - F3DEX2_NoN_2.08 F3DEX2_NoN_2.07 F3DEX2_NoN_2.04H \ +UCODES := F3DEX2_2.08 F3DEX2_2.07 F3DEX2_2.04H F3DEX2_2.08PL \ + F3DEX2_NoN_2.08 F3DEX2_NoN_2.07 F3DEX2_NoN_2.04H F3DEX2_NoN_2.08PL \ F3DZEX_2.08J F3DZEX_2.08I F3DZEX_2.06H \ F3DZEX_NoN_2.08J F3DZEX_NoN_2.08I F3DZEX_NoN_2.06H # F3DEX2 MD5_CODE_F3DEX2_2.08 := 6ccf5fc392e440fb23bc7d7f7d71047c MD5_DATA_F3DEX2_2.08 := 3a3a406acb4295d33fa6e918dd3a7ae4 +MD5_CODE_F3DEX2_2.08PL := 6a5117e62e51d87020fb81dc493efcb6 +MD5_DATA_F3DEX2_2.08PL := 1a6b826322aab9c93da61356af5ead40 MD5_CODE_F3DEX2_2.07 := 1523b8e38a9eae698b48909a0c0c0279 MD5_DATA_F3DEX2_2.07 := 25be72ec04e2e6a23dfa7666645f0662 MD5_CODE_F3DEX2_NoN_2.08 := b5c366b55a032f232aa309cda21be3d7 @@ -45,24 +48,28 @@ MD5_DATA_F3DZEX_NoN_2.06H := e48c7679f1224b7c0947dcd5a4d0c713 # Microcode strings # F3DEX2 -NAME_F3DEX2_2.08 := RSP Gfx ucode F3DEX fifo 2.08 Yoshitaka Yasumoto 1999 Nintendo. -NAME_F3DEX2_2.07 := RSP Gfx ucode F3DEX fifo 2.07 Yoshitaka Yasumoto 1998 Nintendo. -NAME_F3DEX2_2.04H := RSP Gfx ucode F3DEX fifo 2.04H Yoshitaka Yasumoto 1998 Nintendo. -NAME_F3DEX2_NoN_2.08 := RSP Gfx ucode F3DEX.NoN fifo 2.08 Yoshitaka Yasumoto 1999 Nintendo. -NAME_F3DEX2_NoN_2.07 := RSP Gfx ucode F3DEX.NoN fifo 2.07 Yoshitaka Yasumoto 1998 Nintendo. -NAME_F3DEX2_NoN_2.04H := RSP Gfx ucode F3DEX.NoN fifo 2.04H Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DEX2_2.08 := RSP Gfx ucode F3DEX fifo 2.08 Yoshitaka Yasumoto 1999 Nintendo. +NAME_F3DEX2_2.07 := RSP Gfx ucode F3DEX fifo 2.07 Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DEX2_2.04H := RSP Gfx ucode F3DEX fifo 2.04H Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DEX2_2.08PL := RSP Gfx ucode F3DEX fifo 2.08 Yoshitaka Yasumoto/Kawasedo 1999. +NAME_F3DEX2_NoN_2.08 := RSP Gfx ucode F3DEX.NoN fifo 2.08 Yoshitaka Yasumoto 1999 Nintendo. +NAME_F3DEX2_NoN_2.07 := RSP Gfx ucode F3DEX.NoN fifo 2.07 Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DEX2_NoN_2.04H := RSP Gfx ucode F3DEX.NoN fifo 2.04H Yoshitaka Yasumoto 1998 Nintendo. +# Use the same name as no NoN so that emulators recognize it since there was no F3DEX2PL with NoN +NAME_F3DEX2_NoN_2.08PL := RSP Gfx ucode F3DEX fifo 2.08 Yoshitaka Yasumoto/Kawasedo 1999. # F3DZEX -NAME_F3DZEX_2.08J := RSP Gfx ucode F3DZEX.NoN fifo 2.08J Yoshitaka Yasumoto/Kawasedo 1999. -NAME_F3DZEX_2.08I := RSP Gfx ucode F3DZEX.NoN fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999. -NAME_F3DZEX_2.06H := RSP Gfx ucode F3DZEX.NoN fifo 2.06H Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DZEX_2.08J := RSP Gfx ucode F3DZEX.NoN fifo 2.08J Yoshitaka Yasumoto/Kawasedo 1999. +NAME_F3DZEX_2.08I := RSP Gfx ucode F3DZEX.NoN fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999. +NAME_F3DZEX_2.06H := RSP Gfx ucode F3DZEX.NoN fifo 2.06H Yoshitaka Yasumoto 1998 Nintendo. # Use the same name as NoN so that emulators recognize it since there was no F3DZEX without NoN -NAME_F3DZEX_NoN_2.08J := RSP Gfx ucode F3DZEX.NoN fifo 2.08J Yoshitaka Yasumoto/Kawasedo 1999. -NAME_F3DZEX_NoN_2.08I := RSP Gfx ucode F3DZEX.NoN fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999. -NAME_F3DZEX_NoN_2.06H := RSP Gfx ucode F3DZEX.NoN fifo 2.06H Yoshitaka Yasumoto 1998 Nintendo. +NAME_F3DZEX_NoN_2.08J := RSP Gfx ucode F3DZEX.NoN fifo 2.08J Yoshitaka Yasumoto/Kawasedo 1999. +NAME_F3DZEX_NoN_2.08I := RSP Gfx ucode F3DZEX.NoN fifo 2.08I Yoshitaka Yasumoto/Kawasedo 1999. +NAME_F3DZEX_NoN_2.06H := RSP Gfx ucode F3DZEX.NoN fifo 2.06H Yoshitaka Yasumoto 1998 Nintendo. -ID_F3DEX2_2.04H := 0 -ID_F3DEX2_2.07 := 1 -ID_F3DEX2_2.08 := 2 +ID_F3DEX2_2.04H := 0 +ID_F3DEX2_2.07 := 1 +ID_F3DEX2_2.08 := 2 +ID_F3DEX2_2.08PL := 3 ID_F3DZEX_2.06H := 0 ID_F3DZEX_2.08I := 1 diff --git a/README.md b/README.md index 4e9e8d1..1579742 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,10 @@ Matching and (partially) documented disassemblies of the f3dex2/f3dzex N64 RSP microcode families Currently matches the following microcodes: -* F3DEX2 2.08 (Banjo-Tooie) -* F3DEX2 2.07 (Rocket: Robot on Wheels) -* F3DEX2 2.04H (Kirby 64, Smash 64) -* F3DZEX 2.08J (Animal Forest) -* F3DZEX 2.08I (Majora's Mask) -* F3DZEX 2.06H (Ocarina of Time) +* F3DEX2 2.08 (e.g. Banjo-Tooie) +* F3DEX2 2.07 (e.g. Rocket: Robot on Wheels) +* F3DEX2 2.04H (e.g. Kirby 64, Smash 64) +* F3DZEX 2.08J (e.g. Animal Forest) +* F3DZEX 2.08I (e.g. Majora's Mask) +* F3DZEX 2.06H (e.g. Ocarina of Time) +* F3DEX2 2.08 with point lighting (e.g. Paper Mario), nicknamed F3DEX2PL diff --git a/rsp/rsp_defs.inc b/rsp/rsp_defs.inc index cba37c9..6427d95 100644 --- a/rsp/rsp_defs.inc +++ b/rsp/rsp_defs.inc @@ -55,7 +55,7 @@ DPC_STATUS_CLR_XBUS equ 0x0001 TYPE_F3DEX2 equ 0 TYPE_F3DZEX equ 1 -UCODE_HAS_POINT_LIGHTING equ (UCODE_TYPE == TYPE_F3DZEX && UCODE_ID >= 1) +UCODE_HAS_POINT_LIGHTING equ ((UCODE_TYPE == TYPE_F3DZEX && UCODE_ID >= 1) || (UCODE_TYPE == TYPE_F3DEX2 && UCODE_ID == 3)) UCODE_IS_206_OR_OLDER equ ((UCODE_TYPE == TYPE_F3DZEX && UCODE_ID < 1) || (UCODE_TYPE == TYPE_F3DEX2 && UCODE_ID < 1)) UCODE_IS_207_OR_OLDER equ ((UCODE_TYPE == TYPE_F3DZEX && UCODE_ID < 1) || (UCODE_TYPE == TYPE_F3DEX2 && UCODE_ID < 2)) UCODE_IS_F3DEX2_204H equ (UCODE_TYPE == TYPE_F3DEX2 && UCODE_ID == 0) \ No newline at end of file