From 99c0c967cdbfd3427d04e3e3e5b31c71d20e5b43 Mon Sep 17 00:00:00 2001 From: thecozies Date: Wed, 15 Sep 2021 06:59:28 -0500 Subject: [PATCH 1/4] added forced includes to c vscode configuration --- .vscode/c_cpp_properties.json | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .vscode/c_cpp_properties.json diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 00000000..8d90657a --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,38 @@ +{ + "configurations": [ + { + "name": "Linux", + "includePath": [ + "${workspaceFolder}/include/n64/**", + "${workspaceFolder}/include/**", + "${workspaceFolder}/textures/**", + "${workspaceFolder}/**" + ], + "forcedInclude": [ + "${workspaceFolder}/include/types.h", + "${workspaceFolder}/include/n64/ultra64.h", + "${workspaceFolder}/include/sm64.h", + "${workspaceFolder}/include/config.h", + "${workspaceFolder}/include/make_const_nonconst.h", + "${workspaceFolder}/include/geo_commands.h", + "${workspaceFolder}/include/level_commands.h", + "${workspaceFolder}/include/segment_symbols.h", + "${workspaceFolder}/include/command_macros_base.h" + ], + "defines": [ + "TARGET_N64=1", + "VERSION_US=1", + "F3DEX_GBI_2=1", + "F3DZEX_GBI_2=1", + "F3DEX_GBI_SHARED=1", + "NON_MATCHING=1", + "AVOID_UB=1" + ], + "compilerPath": "/usr/bin/mips-linux-gnu-gcc", + "cStandard": "gnu17", + "cppStandard": "gnu++14", + "intelliSenseMode": "linux-gcc-x64" + } + ], + "version": 4 +} From a6c001d42c0a5107c218589e18c45901ae531a21 Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Fri, 17 Sep 2021 17:53:53 -0400 Subject: [PATCH 2/4] Remove Fast3D --- Makefile | 12 +- lib/rsp.s | 8 - rsp/fast3d.s | 1766 -------------------------------------------------- rsp/gbi.inc | 19 - 4 files changed, 3 insertions(+), 1802 deletions(-) delete mode 100644 rsp/fast3d.s delete mode 100644 rsp/gbi.inc diff --git a/Makefile b/Makefile index ac9b921e..2d129fe7 100644 --- a/Makefile +++ b/Makefile @@ -114,20 +114,14 @@ TARGET := sm64.$(VERSION) # GRUCODE - selects which RSP microcode to use. -# f3d_old - default for JP and US versions -# f3d_new - default for EU and Shindou versions # f3dex - # f3dex2 - # l3dex2 - F3DEX2 version that only renders in wireframe # f3dzex - newer, experimental microcode used in Animal Crossing # super3d - extremely experimental version of Fast3D lacking many features for speed -$(eval $(call validate-option,GRUCODE,f3d_old f3dex f3dex2 f3dex2pl f3d_new f3dzex super3d l3dex2)) +$(eval $(call validate-option,GRUCODE,f3dex f3dex2 f3dex2pl f3dzex super3d l3dex2)) -ifeq ($(GRUCODE),f3d_old) - DEFINES += F3D_OLD=1 -else ifeq ($(GRUCODE),f3d_new) # Fast3D 2.0H - DEFINES += F3D_NEW=1 -else ifeq ($(GRUCODE),f3dex) # Fast3DEX +ifeq ($(GRUCODE),f3dex) # Fast3DEX DEFINES += F3DEX_GBI=1 F3DEX_GBI_SHARED=1 else ifeq ($(GRUCODE),f3dex2) # Fast3DEX2 DEFINES += F3DEX_GBI_2=1 F3DEX_GBI_SHARED=1 @@ -521,7 +515,7 @@ libultra: $(BUILD_DIR)/libultra.a $(BUILD_DIR)/asm/boot.o: $(IPL3_RAW_FILES) $(BUILD_DIR)/src/game/crash_screen.o: $(CRASH_TEXTURE_C_FILES) $(BUILD_DIR)/src/game/version.o: $(BUILD_DIR)/src/game/version_data.h -$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/fast3d.bin $(BUILD_DIR)/rsp/audio.bin +$(BUILD_DIR)/lib/rsp.o: $(BUILD_DIR)/rsp/rspboot.bin $(BUILD_DIR)/rsp/audio.bin $(SOUND_BIN_DIR)/sound_data.o: $(SOUND_BIN_DIR)/sound_data.ctl $(SOUND_BIN_DIR)/sound_data.tbl $(SOUND_BIN_DIR)/sequences.bin $(SOUND_BIN_DIR)/bank_sets $(BUILD_DIR)/levels/scripts.o: $(BUILD_DIR)/include/level_headers.h diff --git a/lib/rsp.s b/lib/rsp.s index 4c82b25a..1619a1da 100644 --- a/lib/rsp.s +++ b/lib/rsp.s @@ -15,10 +15,6 @@ glabel rspbootTextEnd glabel gspSuper3D_fifoTextStart .incbin "lib/PR/super3d/Super3D.bin" glabel gspSuper3D_fifoTextEnd -#else -glabel gspFast3D_fifoTextStart /* Use regular Fast3D bins (default) */ - .incbin "rsp/fast3d.bin" -glabel gspFast3D_fifoTextEnd #endif #else /* Use one of the Fast3DEX series grucodes. */ @@ -171,10 +167,6 @@ glabel gspS2DEX2_fifoTextEnd glabel gspSuper3D_fifoDataStart .incbin "lib/PR/super3d/Super3D_data.bin" glabel gspSuper3D_fifoDataEnd -#else -glabel gspFast3D_fifoDataStart - .incbin "rsp/fast3d_data.bin" -glabel gspFast3D_fifoDataEnd #endif #else /* Using one of the Fast3DEX series grucodes */ diff --git a/rsp/fast3d.s b/rsp/fast3d.s deleted file mode 100644 index e44432b6..00000000 --- a/rsp/fast3d.s +++ /dev/null @@ -1,1766 +0,0 @@ -.rsp - -.include "rsp/rsp_defs.inc" -.include "rsp/gbi.inc" - -// This file assumes DATA_FILE and CODE_FILE are set on the command line - -.if version() < 110 - .error "armips 0.11 or newer is required" -.endif - -// Overlay table data member offsets -overlay_load equ 0x0000 -overlay_len equ 0x0004 -overlay_imem equ 0x0006 -.macro OverlayEntry, loadStart, loadEnd, imemAddr - .dw loadStart - .dh (loadEnd - loadStart - 1) & 0xFFFF - .dh (imemAddr) & 0xFFFF -.endmacro - -.macro jumpTableEntry, addr - .dh addr & 0xFFFF -.endmacro - -// RSP DMEM -.create DATA_FILE, 0x0000 - -// 0x0000-0x0027: Overlay Table -overlayInfo0: - OverlayEntry orga(Overlay0Address), orga(Overlay0End), Overlay0Address -overlayInfo1: - OverlayEntry orga(Overlay1Address), orga(Overlay1End), Overlay1Address -overlayInfo2: - OverlayEntry orga(Overlay2Address), orga(Overlay2End), Overlay2Address -overlayInfo3: - OverlayEntry orga(Overlay3Address), orga(Overlay3End), Overlay3Address -overlayInfo4: - OverlayEntry orga(Overlay4Address), orga(Overlay4End), Overlay4Address - -// 0x0028-0x009F: ?? -.dw 0x0FFAF006 -.dw 0x7FFF0000 -.dw 0x00000001 -.dw 0x0002FFFF -.dw 0x40000004 -.dw 0x06330200 -.dw 0x7FFFFFF8 -.dw 0x00080040 -.dw 0x00208000 -.dw 0x01CCCCCC -.dw 0x0001FFFF -.dw 0x00010001 -.dw 0x0001FFFF -.dw 0x00010001 -.dw 0x00020002 -.dw 0x00020002 - -// 0x0068 -.dw 0x00020002 -.dw 0x00020002 - -data0070: -.dw 0x00010000 - -// 0x0074 -.dh 0x0000 -// 0x0076 -.dh 0x0001 - -// 0x0078 -.dw 0x00000001 -.dw 0x00000001 -.dw 0x00010000 -.dw 0x0000FFFF -.dw 0x00000001 -.dw 0x0000FFFF -.dw 0x00000000 -.dw 0x0001FFFF -.dw 0x00000000 -.dw 0x00010001 - -// 0x00A0-0x00A1 -lightEntry: - jumpTableEntry load_lighting - -// 0x00A2-0x00A3: ?? -.dh 0x7FFF - -// 0x00A4-0x00B3: ?? -.dw 0x571D3A0C -.dw 0x00010002 -.dw 0x01000200 -.dw 0x40000040 - -// 0x00B4 -.dh 0x0000 - -// 0x00B6-0x00B7 -taskDoneEntry: - jumpTableEntry overlay_4_entry - -// 0x00B8 -lower24Mask: -.dw 0x00FFFFFF - -// 0x00BC: Operation Types -operationJumpTable: - jumpTableEntry dispatch_dma // cmds 0x00-0x3f -spNoopEntry: - jumpTableEntry SP_NOOP // cmds 0x40-0x7f - jumpTableEntry dispatch_imm // cmds 0x80-0xbf - jumpTableEntry dispatch_rdp // cmds 0xc0-0xff - -// 0x00C4: DMA operations -dmaJumpTable: - jumpTableEntry SP_NOOP // 0x00 - jumpTableEntry dma_MTX // 0x01 - jumpTableEntry SP_NOOP // 0x02 - jumpTableEntry dma_MOVEMEM // 0x03 - jumpTableEntry dma_VTX // 0x04 - jumpTableEntry SP_NOOP // 0x05 - jumpTableEntry dma_DL // 0x06 - jumpTableEntry SP_NOOP // 0x07 - jumpTableEntry SP_NOOP // 0x08 - jumpTableEntry SP_NOOP // 0x09 - -// 0x00D8: Immediate operations -immediateJumpTableBase equ (immediateJumpTable - ((0xB2 << 1) & 0xFE)) -.ifdef F3D_OLD - jumpTableEntry imm_UNKNOWN -.endif -immediateJumpTable: - jumpTableEntry imm_RDPHALF_CONT // 0xB2 - jumpTableEntry imm_RDPHALF_2 // 0xB3 - jumpTableEntry imm_RDPHALF_1 // 0xB4 - jumpTableEntry SP_NOOP // 0xB5? - jumpTableEntry imm_CLEARGEOMETRYMODE // 0xB6 - jumpTableEntry imm_SETGEOMETRYMODE // 0xB7 - jumpTableEntry imm_ENDDL // 0xB8 - jumpTableEntry imm_SETOTHERMODE_L // 0xB9 - jumpTableEntry imm_SETOTHERMODE_H // 0xBA - jumpTableEntry imm_TEXTURE // 0xBB - jumpTableEntry imm_MOVEWORD // 0xBC - jumpTableEntry imm_POPMTX // 0xBD - jumpTableEntry imm_CULLDL // 0xBE - jumpTableEntry imm_TRI1 // 0xBF - -// 0x00F6: Label constants -labelLUT: - jumpTableEntry found_in -foundOutEntry: - jumpTableEntry found_out - jumpTableEntry found_first_in - jumpTableEntry found_first_out -clipDrawEntry: - jumpTableEntry clip_draw_loop -performClipEntry: - jumpTableEntry perform_clip -nextClipEntry: - jumpTableEntry next_clip -DMAWaitEntry: - jumpTableEntry dma_wait_dl - -// 0x0106: ?? -data0106: -.dh 0x0000 - -.ifdef F3D_NEW -.dh 0x0000 -.endif - -// 0x0108: DRAM pointer -dramPtr: -.dw 0x00000000 -.dh 0x0000 // 0x10C: RDPHALF_2 - -.dh 0x0000 - -// 0x110: display list stack size -displayListStackSize: -.dh 0x0000 -.dh 0xFFFF // 0x112: RDPHALF_1 - -.dw 0x00000000 // 0x114: geometrymode (bit 1 is texture ON) -.dw 0xEF080CFF // 0x118: othermode -.dw 0x00000000 -.dw 0x00000000 // 0x120: texture max mipmap levels, tile descriptor enable/disable -.dh 0x0000 // 0x124: texture scaling factor S axis (horizontal) U16 fraction -.dh 0x0000 // 0x126: texture scaling factor T axis (vertical) -.dw 0x00000000 // 0x128: some dpc dma address state - -numLights: -.dw 0x80000040 // 0x12c: num lights, bit 31 = needs init, bits 11:0 = (num_lights+1)*32 -.dw 0x00000000 // 0x130: dram stack pointer 1 -.dw 0x00000000 // 0x134: dram stack pointer modelview matrices - -data0138: -.dw 0x40004000 // 0x138: txtatt (unused?) - -.dw 0x00000000 -.dw 0x00000000 -.dw 0x00000000 -.dw 0x00000000 -.dw 0x00000000 - -.dw 0x00000000 // 0x150: output buffer - -.dw 0x00000000 // 0x154: output buffer size - -data0158: -.dh 0x0000 // 0x158: ?? -.dh 0x0000 -.dw 0x00000000 // 0x15c: dram stack end? - -// 0x160-0x19f: RSP memory segment table -segmentTable: -.fill 0x40, 0 - -// 0x1a0: Lights -.dw 0x80000000 -.dw 0x80000000 -.dw 0x00000000 -.dw 0x00000000 - -lookAtY: // 0x1b0: lookaty -.dw 0x00800000, 0x00800000, 0x7F000000, 0x00000000 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -lookAtX: // 0x1d0: lookatx -.dw 0x00000000, 0x00000000, 0x007F0000, 0x00000000 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -// 0x1f0: L0..L7 light info (32 bytes each) -lightInfo0: // 0x1f0 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 -.dw 0x00000000, 0x00000000, 0xE0011FFF, 0x00040000 - -lightInfo1: // 0x210 -.dw 0xFF000000, 0xFF000000, 0x00000000, 0x00000000 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -lightInfo2: // 0x230 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -lightInfo3: // 0x250 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -lightInfo4: // 0x270 - -// L4-L7 overlap with version string -.definelabel lightInfo5, lightInfo4 + 0x20 // 0x290 -.definelabel lightInfo6, lightInfo5 + 0x20 // 0x2b0 -.definelabel lightInfo7, lightInfo6 + 0x20 // 0x2d0 - -.if defined(F3D_OLD) || defined(VERSION_EU) - .asciiz "RSP SW Version: 2.0D, 04-01-96" -.elseif defined(F3D_NEW) - .asciiz "RSP SW Version: 2.0H, 02-12-97" -.endif -.asciiz "SGI U64 GFX SW TEAM: S Anderson, S Carr, H Cheng, K Luster, R Moore, N Pooley, A Srinivasan", 0x0A - -.dw 0x00000000 - -// 0x2f0-0x31f: DMEM table -dmemTableOffset equ (dmemTable - 0x80) -dmemTable: - .dh viewport, lookAtY, lookAtX, lightInfo0, lightInfo1, lightInfo2, lightInfo3, lightInfo4 - .dh lightInfo5, lightInfo6, lightInfo7, data0138, mpMatrix+0x10, mpMatrix+0x20, mpMatrix+0x30, mpMatrix - .dh numLights, data0070, segmentTable, fogFactors, lightInfo0, pointsBuffer -.ifdef F3D_NEW - .dh displayListStackSize, 0x0000 -.else - .dh 0x0000, 0x0000 -.endif - -// 0x320: Viewport (0x010 bytes) -viewport: -.dw 0x00000000, 0x00000000, 0x00000000, 0x00000000 - -// 0x330: fog factors (three 16-bit integers: mul, add, min) -fogFactors: -.dh 0x0100, 0x0000, 0x00FF - -// 0x336: display list stack (return addresses) -displayListStack: // this is not 4-byte aligned -.fill 0x2a, 0 - -// 0x360-0x39f: Modelview matrix top of stack (0x40 bytes) -modelViewMatrixStack: -.fill 0x40, 0 - -// 0x3a0-0x3df Projection Matrix top of stack (0x40 bytes) -projectionMatrixStack: -.fill 0x40, 0 - -// 0x3e0-0x41f: MP matrix (Modelview * Projection) -mpMatrix: -.fill 0x40, 0 - -// 0x420: Points buffer (0x280 bytes) -pointsBuffer: -.fill 0x280, 0 - -// 0x6a0-0x7df: input display list buffer -inputDisplayList: -.fill 0x140, 0 - -// 0x7E0-0x7ff: input data -inputData: -.fill (0x800 - 0x7E0), 0 - -.close // DATA_FILE - -// uninitialized variables -.definelabel setupTemp, 0x08E0 -.definelabel data08e4, 0x08E4 -.definelabel data08e8, 0x08E8 -.definelabel data08ec, 0x08EC -.definelabel data08f0, 0x08F0 -.definelabel clipTemp, 0x0940 -.definelabel data0942, 0x0942 -.definelabel data0944, 0x0944 -.definelabel data0946, 0x0946 -.definelabel rdpOutput, 0x09E0 -.definelabel scratchSpace, 0x0DE0 -.definelabel data0DE4, 0x0DE4 -.definelabel data0DE8, 0x0DE8 - -.create CODE_FILE, 0x04001080 - -// Overlay 0 -Overlay0Address: - j f3d_04001780 - addi $29, $zero, displayListStackSize - jal segmented_to_physical - add $19, $24, $zero - add $20, $zero, $22 - jal dma_read_write - addi $17, $zero, 0x00 - -// $1 = most significant 2 bits of cmd byte << 1 -// $25 = first command word -dispatch_task: - lh $2, (operationJumpTable)($1) - jr $2 - srl $2, $25, 23 // $2 = MSbyte << 1 - -SP_NOOP: - mfc0 $2, SP_STATUS - andi $2, $2, 0x0080 - bne $2, $zero, f3d_040010cc - lh $21, 0x26($zero) -f3d_040010b8: - bgtz $28, read_next_task_entry - nop - j load_display_list_dma - lh $ra, DMAWaitEntry -f3d_040010c8: - lh $21, taskDoneEntry -f3d_040010cc: - j load_overlay - ori $30, $zero, overlayInfo4 - -load_display_list_dma: - addi $28, $zero, 0x0140 // size of display list - add $21, $zero, $ra - addi $20, $zero, inputDisplayList - add $19, $zero, $26 // TASK_DATA_PTR - addi $18, $zero, 0x013f - jal dma_read_write - addi $17, $zero, 0x00 - jr $21 - addi $27, $zero, inputDisplayList // initial pointer - -// load overlay into IMEM -// $30 = offset into overlay table -// $21 = return address -load_overlay_fcn: - add $21, $zero, $ra -load_overlay: - lw $19, overlay_load($30) - lh $18, overlay_len($30) - lh $20, overlay_imem($30) - jal dma_read_write - addi $17, $zero, 0x00 - jal wait_while_dma_busy - nop - jr $21 - -segmented_to_physical: - lw $11, lower24Mask - srl $12, $19, 22 - andi $12, $12, 0x3c - and $19, $19, $11 - add $13, $zero, $12 - lw $12, 0x0160($13) - jr $ra - add $19, $19, $12 - -// $20 = SP_MEM address -// $19 = DRAM address -// $18 = length - 1 -// $17 = 1:write, 0:read -dma_read_write: -@@dma_full: - mfc0 $11, SP_DMA_FULL - bne $11, $zero, @@dma_full - nop - mtc0 $20, SP_MEM_ADDR - bgtz $17, @@dma_write - mtc0 $19, SP_DRAM_ADDR - jr $ra - mtc0 $18, SP_RD_LEN -@@dma_write: - jr $ra - mtc0 $18, SP_WR_LEN - -wait_while_dma_busy: - mfc0 $11, SP_DMA_BUSY - bne $11, $zero, wait_while_dma_busy - nop - jr $ra - nop - -f3d_04001178: // sends stuff to RDP - add $21, $zero, $ra - lw $19, 0x18($29) - addi $18, $23, -0x09e0 - lw $23, 0x44($29) - blez $18, f3d_040011f4 - add $20, $19, $18 - sub $20, $23, $20 - bgez $20, f3d_040011b8 -f3d_04001198: - mfc0 $20, DPC_STATUS - andi $20, $20, DPC_STATUS_START_VALID - bne $20, $zero, f3d_04001198 -f3d_040011a4: - mfc0 $23, DPC_CURRENT - lw $19, 0x40($29) - beq $23, $19, f3d_040011a4 - nop - mtc0 $19, DPC_START -f3d_040011b8: - mfc0 $23, DPC_CURRENT - sub $20, $19, $23 - bgez $20, f3d_040011d4 - add $20, $19, $18 - sub $20, $20, $23 - bgez $20, f3d_040011b8 - nop -f3d_040011d4: - add $23, $19, $18 - addi $18, $18, -0x01 - addi $20, $zero, rdpOutput // output to RDP - jal dma_read_write - addi $17, $zero, 0x01 - jal wait_while_dma_busy - sw $23, 0x18($29) - mtc0 $23, DPC_END -f3d_040011f4: - jr $21 - addi $23, $zero, rdpOutput - -// codes 0x80-0xBF -// $2 = immediate cmd byte << 1 -dispatch_imm: - andi $2, $2, 0x00fe - lh $2, (immediateJumpTableBase)($2) // data IMM offset - jr $2 - lbu $1, -0x01($27) - -imm_TRI1: - lbu $5, -0x04($27) - lbu $1, -0x03($27) - lbu $2, -0x02($27) - lbu $3, -0x01($27) - sll $5, $5, 2 - sll $1, $1, 2 - sll $2, $2, 2 - sll $3, $3, 2 - addi $1, $1, pointsBuffer - addi $2, $2, pointsBuffer - addi $3, $3, pointsBuffer - sw $1, scratchSpace - sw $2, data0DE4 - sw $3, data0DE8 - lw $4, (scratchSpace)($5) - j f3d_04001998 - lh $30, spNoopEntry - -imm_POPMTX: -.ifdef F3D_NEW - sbv $v31[6], 0x1c($29) -.endif - lw $19, 0x24($29) - lw $3, 0x4c($29) - addi $20, $zero, modelViewMatrixStack - addi $18, $zero, 0x3f - sub $3, $3, $19 - addi $3, $3, -0x0280 - bgez $3, SP_NOOP // stop if stack is empty - addi $19, $19, -0x40 - jal dma_read_write // read new top from DRAM - addi $17, $zero, 0x00 - jal wait_while_dma_busy - addi $3, $zero, mpMatrix // MP matrix (modelview * projection) - j f3d_04001444 // recompute MP matrix - sw $19, 0x24($29) - -imm_MOVEWORD: - lbu $1, -0x05($27) - lhu $2, -0x07($27) - lh $5, 0x030e($1) - add $5, $5, $2 - j SP_NOOP - sw $24, 0x00($5) - -imm_TEXTURE: - sw $25, 0x10($29) - sw $24, 0x14($29) - lh $2, 0x06($29) - andi $2, $2, 0xfffd - andi $3, $25, 0x0001 - sll $3, $3, 1 - or $2, $2, $3 - j SP_NOOP - sh $2, 0x06($29) - -imm_SETOTHERMODE_H: - j @f3d_040012d0 - addi $7, $29, 8 -imm_SETOTHERMODE_L: - addi $7, $29, 0x0c -@f3d_040012d0: - lw $3, 0x00($7) - addi $8, $zero, -1 - lbu $5, -0x05($27) - lbu $6, -0x06($27) - addi $2, $zero, 1 - sllv $2, $2, $5 - addi $2, $2, -1 - sllv $2, $2, $6 - xor $2, $2, $8 - and $2, $2, $3 - or $3, $2, $24 - sw $3, 0x00($7) - lw $25, 0x08($29) - j f3d_040013a8 - lw $24, 0x0c($29) - -imm_CULLDL: - andi $25, $25, 0x03ff -.ifdef F3D_OLD - ori $2, $zero, 0xffff -.else - ori $2, $zero, 0x7070 -.endif -@@f3d_04001314: - lh $3, 0x0444($25) - addi $25, $25, 0x28 - bne $25, $24, @@f3d_04001314 - and $2, $2, $3 - beq $2, $zero, SP_NOOP - -DL_STACK_SIZE_OFFSET equ (defined(F3D_OLD) ? 0x00 : 0x4A) - -imm_ENDDL: - lb $2, (DL_STACK_SIZE_OFFSET)($29) - addi $2, $2, -4 - bltz $2, f3d_040010c8 - addi $3, $2, displayListStack - lw $26, 0x00($3) - sb $2, (DL_STACK_SIZE_OFFSET)($29) - j SP_NOOP - addi $28, $zero, 0 - -imm_SETGEOMETRYMODE: - lw $2, 0x04($29) - or $2, $2, $24 - j SP_NOOP - sw $2, 0x04($29) - -imm_CLEARGEOMETRYMODE: - lw $2, 0x04($29) - addi $3, $zero, -1 - xor $3, $3, $24 - and $2, $2, $3 - j SP_NOOP - sw $2, 0x04($29) - -.ifdef F3D_OLD -imm_RDPHALF_1: - j SP_NOOP - sh $24, 0x02($29) -imm_RDPHALF_2: -.else -imm_RDPHALF_1: -.endif - j f3d_040010b8 - sw $24, -0x04($29) - -.ifdef F3D_OLD -imm_UNKNOWN: -.else -imm_RDPHALF_CONT: -.endif - ori $2, $zero, 0x0000 -.ifdef F3D_OLD -imm_RDPHALF_CONT: -.else -imm_RDPHALF_2: -.endif - j f3d_040013a8 - lw $25, -0x04($29) - -// codes 0xC0-0xFF -dispatch_rdp: - sra $2, $25, 24 - addi $2, $2, 3 - bltz $2, f3d_040013a8 - addi $2, $2, 0x18 - jal segmented_to_physical - add $19, $24, $zero - add $24, $19, $zero -f3d_040013a8: - sw $25, 0x00($23) - sw $24, 0x04($23) - jal f3d_04001178 - addi $23, $23, 0x08 - bgtz $2, SP_NOOP - nop - j f3d_040010b8 - -dispatch_dma: - andi $2, $2, 0x01fe - lh $2, (dmaJumpTable)($2) - jal wait_while_dma_busy - lbu $1, -0x07($27) - jr $2 - andi $6, $1, 0x000f - -dma_MTX: - sbv $v31[6], 0x1c($29) // lights need re-init - andi $8, $1, 0x0001 // 1=projection, 0=modelview - bne $8, $zero, f3d_04001454 - andi $7, $1, 0x0002 // 1=load, 0=multiply - addi $20, $zero, modelViewMatrixStack - andi $8, $1, 0x0004 // 1=push, 0=no push - beq $8, $zero, f3d_04001420 - lqv $v26[0], 0x30($22) - lw $19, 0x24($29) // DRAM stack pointer 2 - lw $8, 0x4c($29) // DRAM stack end - addi $17, $zero, 1 - addi $1, $19, 0x40 - beq $19, $8, f3d_04001420 - addi $12, $zero, 0x3f // BUG: wrong register, should be $18 - jal dma_read_write - sw $1, 0x24($29) - jal wait_while_dma_busy -f3d_04001420: - lqv $v28[0], 0x10($22) - beq $7, $zero, f3d_04001460 - lqv $v27[0], 0x20($22) - sqv $v26[0], 0x30($20) - lqv $v29[0], 0x00($22) - sqv $v28[0], 0x10($20) -f3d_04001438: - addi $3, $zero, mpMatrix - sqv $v27[0], 0x20($20) - sqv $v29[0], 0x00($20) -f3d_04001444: - addi $1, $zero, modelViewMatrixStack - addi $2, $zero, projectionMatrixStack - j f3d_04001484 - lh $ra, spNoopEntry -f3d_04001454: - lqv $v26[0], 0x30($22) - j f3d_04001420 - addi $20, $zero, projectionMatrixStack -f3d_04001460: - addiu $3, $zero, scratchSpace - addu $1, $zero, $22 // input matrix from user - jal f3d_04001484 - addu $2, $zero, $20 // current P matrix or M top - sqv $v6[0], 0x30($20) // store result to P or M - sqv $v5[0], 0x10($20) - lqv $v27[0], 0x00($3) - j f3d_04001438 - lqv $v29[0], -0x20($3) -f3d_04001484: - addi $19, $3, 0x10 -f3d_04001488: - vmudh $v5, $v31, $v31[0] // clear accumulator and $v5 - addi $18, $1, 8 -f3d_04001490: - ldv $v3[0], 0x00($2) - ldv $v4[0], 0x20($2) - lqv $v1[0], 0x00($1) - lqv $v2[0], 0x20($1) - ldv $v3[8], 0x00($2) - ldv $v4[8], 0x20($2) - vmadl $v6, $v4, $v2[0h] - addi $1, $1, 2 - vmadm $v6, $v3, $v2[0h] - addi $2, $2, 8 - vmadn $v6, $v4, $v1[0h] - vmadh $v5, $v3, $v1[0h] - bne $1, $18, f3d_04001490 - vmadn $v6, $v31, $v31[0] - addi $2, $2, -0x20 - addi $1, $1, 8 - sqv $v5[0], 0x00($3) - sqv $v6[0], 0x20($3) - bne $3, $19, f3d_04001488 - addi $3, $3, 0x10 - jr $ra - nop -f3d_040014e8: - addi $8, $zero, viewport - lqv $v3[0], 0x50($zero) - lsv $v19[0], 0x02($29) // RDPHALF_1, contains persp normalize - lh $3, 0x04($29) // geometrymode - ldv $v0[0], 0x00($8) // viewport scale - ldv $v1[0], 0x08($8) // viewport translate - ldv $v0[8], 0x00($8) - ldv $v1[8], 0x08($8) - jr $ra - vmudh $v0, $v0, $v3 // negate Y? - -load_mp_matrix: - addi $8, $zero, mpMatrix - ldv $v11[0], 0x18($8) // load into $v8-v15, dup lower half and higher half - ldv $v11[8], 0x18($8) // $v8-v11 integer parts, $v12-v15 frac parts - ldv $v15[0], 0x38($8) - ldv $v15[8], 0x38($8) -f3d_04001524: - ldv $v8[0], 0x00($8) - ldv $v9[0], 0x08($8) - ldv $v10[0], 0x10($8) - ldv $v12[0], 0x20($8) - ldv $v13[0], 0x28($8) - ldv $v14[0], 0x30($8) - ldv $v8[8], 0x00($8) - ldv $v9[8], 0x08($8) - ldv $v10[8], 0x10($8) - ldv $v12[8], 0x20($8) - ldv $v13[8], 0x28($8) - jr $ra - ldv $v14[8], 0x30($8) - -dma_MOVEMEM: - lqv $v0[0], 0x00($22) - lh $5, (dmemTableOffset)($1) - j SP_NOOP - sqv $v0[0], 0x00($5) - -dma_VTX: - lh $8, spNoopEntry - sh $8, data0106 - srl $1, $1, 4 - addi $5, $1, 1 // num vertex - addi $9, $5, 0 - ldv $v2[0], 0x00($22) // input data - ldv $v2[8], 0x10($22) // load 2nd vertex (assuming it exists) - addi $7, $zero, pointsBuffer - sll $8, $6, 5 // dest index - sll $6, $6, 3 - add $8, $6, $8 // 40 bytes per vertex - jal f3d_040014e8 - add $7, $7, $8 - llv $v17[0], 0x14($29) // texture scaling - jal load_mp_matrix - llv $v17[8], 0x14($29) -@f3d_040015a8: - vmudn $v28, $v12, $v2[0h] // x * first row frac - llv $v18[0], 0x08($22) - vmadh $v28, $v8, $v2[0h] // x * first row int - lw $15, 0x0c($22) // XR, YG, ZB, AA - vmadn $v28, $v13, $v2[1h] // y * second row frac - lw $16, 0x1c($22) - vmadh $v28, $v9, $v2[1h] // y * second row int - andi $1, $3, G_LIGHTING_H - vmadn $v28, $v14, $v2[2h] // z * third row frac - vmadh $v28, $v10, $v2[2h] // z * third row int - vmadn $v28, $v15, $v31[1] // 1 * fourth row frac - llv $v18[8], 0x18($22) - vmadh $v29, $v11, $v31[1] // 1 * fourth row int - bne $1, $zero, load_lighting - addi $22, $22, 0x20 // next 2 vertices -@f3d_040015e4: - vmudm $v18, $v18, $v17 // U *= S scale, V *= T scale (result >> 16) -@f3d_040015e8: - lsv $v21[0], 0x76($zero) - vmudn $v20, $v28, $v21[0] - vmadh $v21, $v29, $v21[0] - vch $v3, $v29, $v29[3h] // do trivial clip rejection - vcl $v3, $v28, $v28[3h] // by comparing xyz with w - cfc2 $13, vcc - vch $v3, $v29, $v21[3h] - vcl $v3, $v28, $v20[3h] - andi $8, $13, 0x0707 // filter out xyz clip result for 1st vertex - andi $13, $13, 0x7070 // filter out xyz clip result for 2nd vertex - sll $8, $8, 4 - sll $13, $13, 16 - or $13, $13, $8 - cfc2 $14, vcc - andi $8, $14, 0x0707 - vadd $v21, $v29, $v31[0] - andi $14, $14, 0x7070 - vadd $v20, $v28, $v31[0] - sll $14, $14, 12 - vmudl $v28, $v28, $v19[0] // persp normalize, used to improve precision - or $8, $8, $14 - vmadm $v29, $v29, $v19[0] - or $8, $8, $13 - vmadn $v28, $v31, $v31[0] - sh $8, 0x24($7) - jal f3d_04001000 // compute 1/w - lh $13, -0x1a($22) // $13 unused? - vge $v6, $v27, $v31[0] // 1/w >= 0? - sdv $v21[0], 0x00($7) // store xyzw int - vmrg $v6, $v27, $v30[0] - sdv $v20[0], 0x08($7) // store xyzw frac - vmudl $v5, $v20, $v26[3h] // mul xyzw with 1/w - vmadm $v5, $v21, $v26[3h] - vmadn $v5, $v20, $v6[3h] - vmadh $v4, $v21, $v6[3h] - addi $9, $9, -1 // decrement vertex input count - vmudl $v5, $v5, $v19[0] // take away persp normalize factor - vmadm $v4, $v4, $v19[0] - vmadn $v5, $v31, $v31[0] - andi $12, $3, G_FOG_H - ldv $v2[0], 0x00($22) // pre-load next vertices from input - vmudh $v7, $v1, $v31[1] // viewport translate * 0001 - ldv $v2[8], 0x10($22) - vmadn $v7, $v5, $v0 // viewport scale - ldv $v29[0], 0x28($zero) - vmadh $v6, $v4, $v0 - ldv $v29[8], 0x28($zero) - vmadn $v7, $v31, $v31[0] // $v6$v7 contains vertex results after viewport - vge $v6, $v6, $v29[1q] // some saturating 0FFA-F006 - sw $15, 0x10($7) - beq $12, $zero, @@f3d_040016e0 // skip fog? - vlt $v6, $v6, $v29[0q] - lqv $v3[0], 0x0330($zero) - vmudn $v5, $v5, $v3[0] // mul fog factor (default 1) - vmadh $v4, $v4, $v3[0] - vadd $v4, $v4, $v3[1] // add parameter (default 0) - vge $v4, $v4, $v31[0] - vlt $v4, $v4, $v3[2] // min parameter (default 0xff) - sbv $v4[5], 0x13($7) // high z for 1st vertex, store in AA - sw $16, 0x18($7) - sbv $v4[13], 0x1b($7) // high z for 2nd vertex, store in AA - lw $16, 0x18($7) -@@f3d_040016e0: - slv $v18[0], 0x14($7) // texture coordinates, 1st vertex - sdv $v6[0], 0x18($7) // xyz_int after viewport - ssv $v7[4], 0x1e($7) // z_frac after viewport - ssv $v27[6], 0x20($7) // 1/w - ssv $v26[6], 0x22($7) - blez $9, @@f3d_04001728 - addi $9, $9, -1 // decrement vertex input counter again - sdv $v21[8], 0x28($7) - sdv $v20[8], 0x30($7) - slv $v18[8], 0x3c($7) // texture coordinates, 2nd vertex - sw $16, 0x38($7) - sdv $v6[8], 0x40($7) - ssv $v7[12], 0x46($7) - ssv $v27[14], 0x48($7) - ssv $v26[14], 0x4a($7) - sw $8, 0x4c($7) // puts high hword first - addi $7, $7, 0x50 - bgtz $9, @f3d_040015a8 -@@f3d_04001728: - lh $8, data0106 - jr $8 - nop - -dma_DL: - bgtz $1, @@f3d_04001754 // 0=store ret addr, 1=end DL after branch - lb $2, (DL_STACK_SIZE_OFFSET)($29) - addi $4, $2, -0x24 // DL stack full? - bgtz $4, SP_NOOP - addi $3, $2, displayListStack - addi $2, $2, 4 - sw $26, 0x00($3) // store return address on DL stack - sb $2, (DL_STACK_SIZE_OFFSET)($29) -@@f3d_04001754: - jal segmented_to_physical - add $19, $24, $zero - add $26, $19, $zero - j SP_NOOP - addi $28, $zero, 0x00 - -// Overlays 2-4 will overwrite the following code -.org 0x04001768 -f3d_04001768: - ori $30, $zero, overlayInfo2 - b load_overlay - lh $21, performClipEntry - -load_lighting: - ori $30, $zero, overlayInfo3 - b load_overlay - lh $21, lightEntry - -f3d_04001780: - ori $2, $zero, 0x2800 // clear yielded, clear taskdone - mtc0 $2, SP_STATUS - lqv $v31[0], 0x30($zero) - lqv $v30[0], 0x40($zero) - lw $4, OSTask_addr + OSTask_flags - andi $4, $4, 0x0001 - bne $4, $zero, @@f3d_04001870 - nop - lw $23, 0x28($1) // task output buff - lw $3, 0x2c($1) // task output buff size - sw $23, 0x40($29) - sw $3, 0x44($29) - mfc0 $4, DPC_STATUS - andi $4, $4, DPC_STATUS_XBUS_DMA - bne $4, $zero, @@f3d_040017e4 - mfc0 $4, DPC_END - sub $23, $23, $4 - bgtz $23, @@f3d_040017e4 - mfc0 $5, DPC_CURRENT - beq $5, $zero, @@f3d_040017e4 - nop - beq $5, $4, @@f3d_040017e4 - nop - j @@f3d_04001800 - ori $3, $4, 0x0000 -@@f3d_040017e4: - mfc0 $4, DPC_STATUS - andi $4, $4, DPC_STATUS_START_VALID - bne $4, $zero, @@f3d_040017e4 - addi $4, $zero, DPC_STATUS_CLR_XBUS - mtc0 $4, DPC_STATUS - mtc0 $3, DPC_START - mtc0 $3, DPC_END -@@f3d_04001800: - sw $3, 0x18($29) - addi $23, $zero, rdpOutput - lw $5, 0x10($1) // TASK_UCODE (DRAM address) - lw $2, overlayInfo1 - lw $3, overlayInfo2 - lw $4, overlayInfo3 - lw $6, overlayInfo4 - add $2, $2, $5 // apply DRAM offset - add $3, $3, $5 - add $4, $4, $5 - add $6, $6, $5 - sw $2, overlayInfo1 // store back with DRAM offsets - sw $3, overlayInfo2 - sw $4, overlayInfo3 - sw $6, overlayInfo4 - jal load_overlay_fcn - addi $30, $zero, overlayInfo1 - jal load_display_list_dma - lw $26, 0x30($1) // TASK_DATA_PTR - lw $2, 0x20($1) // TASK_DRAM_STACK - sw $2, 0x20($29) - sw $2, 0x24($29) - addi $2, $2, 0x0280 // end of stack? - sw $2, 0x4c($29) - lw $2, -0x08($zero) // TASK_YIELD_DATA_PTR - sw $2, dramPtr - j dma_wait_dl - nop -@@f3d_04001870: - jal load_overlay_fcn - addi $30, $zero, overlayInfo1 - lw $23, data08F0 - lw $28, data08E4 - lw $27, data08E8 - j SP_NOOP - lw $26, data08EC - -// 0x0400188c-0x04001987: bunch of nops -.fill 0xfc, 0 -.ifdef F3D_OLD - .fill 16, 0 -.endif - -// from G_TRI1 -f3d_04001998: - lh $11, 0x24($3) - lh $8, 0x24($2) - lh $9, 0x24($1) - and $12, $11, $8 - or $11, $11, $8 - and $12, $12, $9 - andi $12, $12, 0x7070 - bne $12, $zero, SP_NOOP // all vertices outside screen, return - or $11, $11, $9 - andi $11, $11, 0x4343 - bne $11, $zero, f3d_04001768 // halfway outside, so trigger clipping routine -f3d_040019c4: - llv $v13[0], 0x18($1) // xy_int after viewport - llv $v14[0], 0x18($2) - llv $v15[0], 0x18($3) - lw $13, 0x04($29) // geometrymode - addi $8, $zero, setupTemp // setup temp area - lsv $v21[0], 0x02($29) - lsv $v5[0], 0x06($1) // w_int p1 - vsub $v10, $v14, $v13 // p2-p1 - lsv $v6[0], 0x0e($1) // w_frac p1 - vsub $v9, $v15, $v13 // p3-p1 - lsv $v5[2], 0x06($2) - vsub $v12, $v13, $v14 // p1-p2 - lsv $v6[2], 0x0e($2) - lsv $v5[4], 0x06($3) - lsv $v6[4], 0x0e($3) - vmudh $v16, $v9, $v10[1] // (p3-p1)*((p2-p1)_y) - lh $9, 0x1a($1) // y_int after viewport - vsar $v18, $v18, $v18[1] // high into $v18 - lh $10, 0x1a($2) - vsar $v17, $v17, $v17[0] // bits 47..31 of ACC - lh $11, 0x1a($3) - vmudh $v16, $v12, $v9[1] // (p1-p2)*((p3-p1)_y) - andi $14, $13, G_CULL_FRONT - vsar $v20, $v20, $v20[1] - andi $15, $13, G_CULL_BACK - vsar $v19, $v19, $v19[0] - addi $12, $zero, 0 // now sort p1,p2,p3 by y -@@sort_points_loop: - slt $7, $10, $9 - blez $7, @@f3d_04001a58 - add $7, $10, $zero // y2_int < y1_int (after viewport) - add $10, $9, $zero // swap $9/$10 and swap $1/$2 - add $9, $7, $zero - addu $7, $2, $zero - addu $2, $1, $zero - addu $1, $7, $zero - xori $12, $12, 0x0001 // xor that we swapped p1 and p2 - nop // interesting place for NOP -@@f3d_04001a58: - vaddc $v28, $v18, $v20 - slt $7, $11, $10 - vadd $v29, $v17, $v19 - blez $7, @@f3d_04001a88 - add $7, $11, $zero // y3_int < y2_int? - add $11, $10, $zero // swap p2, p3 - add $10, $7, $zero - addu $7, $3, $zero - addu $3, $2, $zero - addu $2, $7, $zero - j @@sort_points_loop // go back to test y1 and new y2 - xori $12, $12, 0x0001 // xor that we swapped p2 and p3 -@@f3d_04001a88: - vlt $v27, $v29, $v31[0] - llv $v15[0], 0x18($3) // xy_int after viewport for new p3 - vor $v26, $v29, $v28 - llv $v14[0], 0x18($2) - llv $v13[0], 0x18($1) - blez $12, @@f3d_04001ab0 // skip if even number of swaps - vsub $v4, $v15, $v14 // p3-p2 - vmudn $v28, $v28, $v31[3] - vmadh $v29, $v29, $v31[3] - vmadn $v28, $v31, $v31[0] -@@f3d_04001ab0: - vsub $v10, $v14, $v13 // p2-p1 - mfc2 $17, $v27[0] - vsub $v9, $v15, $v13 // p3-p1 - mfc2 $16, $v26[0] - sra $17, $17, 31 - vmov $v29[3], $v29[0] - and $15, $15, $17 - vmov $v28[3], $v28[0] - vmov $v4[2], $v10[0] - beq $16, $zero, @@f3d_04001fd0 // skip this triangle? - xori $17, $17, 0xffff - vlt $v27, $v29, $v31[0] - and $14, $14, $17 - vmov $v4[3], $v10[1] - or $16, $15, $14 - vmov $v4[4], $v9[0] - bgtz $16, @@f3d_04001fd0 - vmov $v4[5], $v9[1] - mfc2 $7, $v27[0] - jal f3d_04001000 - addi $6, $zero, 0x80 // left major flag - bltz $7, @@f3d_04001b10 - lb $5, 0x07($29) // low byte for geometrymode - addi $6, $zero, 0 -@@f3d_04001b10: - vmudm $v9, $v4, $v31[4] - vmadn $v10, $v31, $v31[0] - vrcp $v8[1], $v4[1] - vrcph $v7[1], $v31[0] - ori $5, $5, 0x00c8 // OR with RDP command code - lb $7, 0x12($29) // mpmap level and tile ID - vrcp $v8[3], $v4[3] - vrcph $v7[3], $v31[0] - vrcp $v8[5], $v4[5] - vrcph $v7[5], $v31[0] - or $6, $6, $7 - vmudl $v8, $v8, $v30[4] - sb $5, 0x00($23) - vmadm $v7, $v7, $v30[4] - sb $6, 0x01($23) - vmadn $v8, $v31, $v31[0] - vmudh $v4, $v4, $v31[5] - lsv $v12[0], 0x18($2) - vmudl $v6, $v6, $v21[0] - lsv $v12[4], 0x18($1) - vmadm $v5, $v5, $v21[0] - lsv $v12[8], 0x18($1) - vmadn $v6, $v31, $v31[0] - sll $7, $9, 14 - vmudl $v1, $v8, $v10[0q] - vmadm $v1, $v7, $v10[0q] - vmadn $v1, $v8, $v9[0q] - vmadh $v0, $v7, $v9[0q] - mtc2 $7, $v2[0] - vmadn $v1, $v31, $v31[0] - sw $3, 0x00($8) - vmudl $v8, $v8, $v31[4] - vmadm $v7, $v7, $v31[4] - vmadn $v8, $v31, $v31[0] - vmudl $v1, $v1, $v31[4] - vmadm $v0, $v0, $v31[4] - vmadn $v1, $v31, $v31[0] - sh $11, 0x02($23) // YL - vand $v16, $v1, $v30[1] - sh $9, 0x06($23) // YH - vmudm $v12, $v12, $v31[4] - sw $2, 0x04($8) - vmadn $v13, $v31, $v31[0] - sw $1, 0x08($8) - sh $10, 0x04($23) // YM - vcr $v0, $v0, $v30[6] - ssv $v12[0], 0x08($23) // XL - vmudl $v11, $v16, $v2[0] - ssv $v13[0], 0x0a($23) // XL, frac - vmadm $v10, $v0, $v2[0] - ssv $v0[2], 0x0c($23) // DxLDy - vmadn $v11, $v31, $v31[0] - ssv $v1[2], 0x0e($23) // DxLDy, frac - andi $7, $5, G_TEXTURE_ENABLE - addi $15, $8, 8 - addi $16, $8, 0x10 - vsubc $v3, $v13, $v11[1q] - ssv $v0[10], 0x14($23) // DxHDy - vsub $v9, $v12, $v10[1q] - ssv $v1[10], 0x16($23) // DxHDy, frac - vsubc $v21, $v6, $v6[1] - ssv $v0[6], 0x1c($23) // DxMDy - vlt $v19, $v5, $v5[1] - ssv $v1[6], 0x1e($23) // DxMDy, frac - vmrg $v20, $v6, $v6[1] - ssv $v9[8], 0x10($23) // XH - vsubc $v21, $v20, $v6[2] - ssv $v3[8], 0x12($23) // XH, frac - vlt $v19, $v19, $v5[2] - ssv $v9[4], 0x18($23) // XM - vmrg $v20, $v20, $v6[2] - ssv $v3[4], 0x1a($23) // XM, frac - addi $23, $23, 0x20 - blez $7, @@f3d_04001cfc // no texture? - vmudl $v20, $v20, $v30[5] - lw $14, 0x00($15) - vmadm $v19, $v19, $v30[5] - lw $17, -0x04($15) - vmadn $v20, $v31, $v31[0] - lw $18, -0x08($15) - llv $v9[0], 0x14($14) - llv $v9[8], 0x14($17) - llv $v22[0], 0x14($18) - lsv $v11[0], 0x22($14) - lsv $v12[0], 0x20($14) - lsv $v11[8], 0x22($17) - vmov $v9[2], $v30[0] - lsv $v12[8], 0x20($17) - vmov $v9[6], $v30[0] - lsv $v24[0], 0x22($18) - vmov $v22[2], $v30[0] - lsv $v25[0], 0x20($18) - vmudl $v6, $v11, $v20[0] - vmadm $v6, $v12, $v20[0] - ssv $v19[0], 0x44($8) - vmadn $v6, $v11, $v19[0] - ssv $v20[0], 0x4c($8) - vmadh $v5, $v12, $v19[0] - vmudl $v16, $v24, $v20[0] - vmadm $v16, $v25, $v20[0] - vmadn $v20, $v24, $v19[0] - vmadh $v19, $v25, $v19[0] - vmudm $v16, $v9, $v6[0h] - vmadh $v9, $v9, $v5[0h] - vmadn $v10, $v31, $v31[0] - vmudm $v16, $v22, $v20[0] - vmadh $v22, $v22, $v19[0] - vmadn $v23, $v31, $v31[0] - sdv $v9[8], 0x10($16) - sdv $v10[8], 0x18($16) - sdv $v9[0], 0x00($16) - sdv $v10[0], 0x08($16) - sdv $v22[0], 0x20($16) - sdv $v23[0], 0x28($16) - vabs $v9, $v9, $v9 - llv $v19[0], 0x10($16) - vabs $v22, $v22, $v22 - llv $v20[0], 0x18($16) - vabs $v19, $v19, $v19 - vge $v17, $v9, $v22 - vmrg $v18, $v10, $v23 - vge $v17, $v17, $v19 - vmrg $v18, $v18, $v20 -@@f3d_04001cfc: - slv $v17[0], 0x40($8) - slv $v18[0], 0x48($8) - andi $7, $5, (G_SHADE | G_TEXTURE_ENABLE | G_ZBUFFER) - blez $7, @@f3d_04001fcc // skip code below if no bits set - vxor $v18, $v31, $v31 - luv $v25[0], 0x10($3) - vadd $v16, $v18, $v30[5] - luv $v15[0], 0x10($1) - vadd $v24, $v18, $v30[5] - andi $7, $13, 0x0200 - vadd $v5, $v18, $v30[5] - bgtz $7, @@f3d_04001d3c - luv $v23[0], 0x10($2) - luv $v25[0], 0x10($4) - luv $v15[0], 0x10($4) - luv $v23[0], 0x10($4) -@@f3d_04001d3c: - vmudm $v25, $v25, $v31[7] - vmudm $v15, $v15, $v31[7] - vmudm $v23, $v23, $v31[7] - ldv $v16[8], 0x18($8) - ldv $v15[8], 0x10($8) - ldv $v24[8], 0x28($8) - ldv $v23[8], 0x20($8) - ldv $v5[8], 0x38($8) - ldv $v25[8], 0x30($8) - lsv $v16[14], 0x1e($1) - lsv $v15[14], 0x1c($1) - lsv $v24[14], 0x1e($2) - lsv $v23[14], 0x1c($2) - lsv $v5[14], 0x1e($3) - lsv $v25[14], 0x1c($3) - vsubc $v12, $v24, $v16 - vsub $v11, $v23, $v15 - vsubc $v20, $v16, $v5 - vsub $v19, $v15, $v25 - vsubc $v10, $v5, $v16 - vsub $v9, $v25, $v15 - vsubc $v22, $v16, $v24 - vsub $v21, $v15, $v23 - vmudn $v6, $v10, $v4[3] - vmadh $v6, $v9, $v4[3] - vmadn $v6, $v22, $v4[5] - vmadh $v6, $v21, $v4[5] - vsar $v9, $v9, $v9[0] - vsar $v10, $v10, $v10[1] - vmudn $v6, $v12, $v4[4] - vmadh $v6, $v11, $v4[4] - vmadn $v6, $v20, $v4[2] - vmadh $v6, $v19, $v4[2] - vsar $v11, $v11, $v11[0] - vsar $v12, $v12, $v12[1] - vmudl $v6, $v10, $v26[3] - vmadm $v6, $v9, $v26[3] - vmadn $v10, $v10, $v27[3] - vmadh $v9, $v9, $v27[3] - vmudl $v6, $v12, $v26[3] - vmadm $v6, $v11, $v26[3] - vmadn $v12, $v12, $v27[3] - sdv $v9[0], 0x08($23) - vmadh $v11, $v11, $v27[3] - sdv $v10[0], 0x18($23) - vmudn $v6, $v12, $v31[1] - vmadh $v6, $v11, $v31[1] - vmadl $v6, $v10, $v1[5] - vmadm $v6, $v9, $v1[5] - vmadn $v14, $v10, $v0[5] - sdv $v11[0], 0x28($23) - vmadh $v13, $v9, $v0[5] - sdv $v12[0], 0x38($23) - vmudl $v28, $v14, $v2[0] - sdv $v13[0], 0x20($23) - vmadm $v6, $v13, $v2[0] - sdv $v14[0], 0x30($23) - vmadn $v28, $v31, $v31[0] - vsubc $v18, $v16, $v28 - vsub $v17, $v15, $v6 - andi $7, $5, G_SHADE - blez $7, @@f3d_04001e44 - andi $7, $5, G_TEXTURE_ENABLE - addi $23, $23, 0x40 - sdv $v17[0], -0x40($23) - sdv $v18[0], -0x30($23) -@@f3d_04001e44: - blez $7, @@f3d_04001f48 - andi $7, $5, G_ZBUFFER - addi $16, $zero, 0x0800 - mtc2 $16, $v19[0] - vabs $v24, $v9, $v9 - ldv $v20[8], 0x40($8) - vabs $v25, $v11, $v11 - ldv $v21[8], 0x48($8) - vmudm $v24, $v24, $v19[0] - vmadn $v26, $v31, $v31[0] - vmudm $v25, $v25, $v19[0] - vmadn $v27, $v31, $v31[0] - vmudl $v21, $v21, $v19[0] - vmadm $v20, $v20, $v19[0] - vmadn $v21, $v31, $v31[0] - vmudn $v26, $v26, $v31[2] - vmadh $v24, $v24, $v31[2] - vmadn $v26, $v31, $v31[0] - vmadn $v23, $v27, $v31[1] - vmadh $v22, $v25, $v31[1] - addi $16, $zero, 0x40 - vmadn $v6, $v21, $v31[1] - mtc2 $16, $v19[0] - vmadh $v5, $v20, $v31[1] - vsubc $v23, $v6, $v6[5] - vge $v5, $v5, $v5[5] - vmrg $v6, $v6, $v6[5] - vsubc $v23, $v6, $v6[6] - vge $v5, $v5, $v5[6] - vmrg $v6, $v6, $v6[6] - vmudl $v6, $v6, $v19[0] - vmadm $v5, $v5, $v19[0] - vmadn $v6, $v31, $v31[0] - vrcph $v23[0], $v5[4] - vrcpl $v6[0], $v6[4] - vrcph $v5[0], $v31[0] - vmudn $v6, $v6, $v31[2] - vmadh $v5, $v5, $v31[2] - vlt $v5, $v5, $v31[1] - vmrg $v6, $v6, $v31[0] - vmudl $v20, $v18, $v6[0] - vmadm $v20, $v17, $v6[0] - vmadn $v20, $v18, $v5[0] - vmadh $v19, $v17, $v5[0] - vmudl $v22, $v10, $v6[0] - vmadm $v22, $v9, $v6[0] - vmadn $v22, $v10, $v5[0] - sdv $v19[8], 0x00($23) - vmadh $v21, $v9, $v5[0] - sdv $v20[8], 0x10($23) - vmudl $v24, $v12, $v6[0] - vmadm $v24, $v11, $v6[0] - vmadn $v24, $v12, $v5[0] - sdv $v21[8], 0x08($23) - vmadh $v23, $v11, $v5[0] - sdv $v22[8], 0x18($23) - vmudl $v26, $v14, $v6[0] - vmadm $v26, $v13, $v6[0] - vmadn $v26, $v14, $v5[0] - sdv $v23[8], 0x28($23) - vmadh $v25, $v13, $v5[0] - sdv $v24[8], 0x38($23) - addi $23, $23, 0x40 - sdv $v25[8], -0x20($23) - sdv $v26[8], -0x10($23) -@@f3d_04001f48: - blez $7, @@f3d_04001fcc - vmudn $v14, $v14, $v30[4] - vmadh $v13, $v13, $v30[4] - vmadn $v14, $v31, $v31[0] - vmudn $v16, $v16, $v30[4] - vmadh $v15, $v15, $v30[4] - vmadn $v16, $v31, $v31[0] - ssv $v13[14], 0x08($23) - vmudn $v10, $v10, $v30[4] - ssv $v14[14], 0x0a($23) - vmadh $v9, $v9, $v30[4] - vmadn $v10, $v31, $v31[0] - vmudn $v12, $v12, $v30[4] - vmadh $v11, $v11, $v30[4] - vmadn $v12, $v31, $v31[0] - lbu $7, 0x11($29) - sub $7, $zero, $7 - beq $7, $zero, @@f3d_04001f9c - mtc2 $7, $v6[0] - vch $v11, $v11, $v6[0] - vcl $v12, $v12, $v31[0] -@@f3d_04001f9c: - ssv $v9[14], 0x04($23) - vmudl $v28, $v14, $v2[0] - ssv $v10[14], 0x06($23) - vmadm $v6, $v13, $v2[0] - ssv $v11[14], 0x0c($23) - vmadn $v28, $v31, $v31[0] - ssv $v12[14], 0x0e($23) - vsubc $v18, $v16, $v28 - vsub $v17, $v15, $v6 - addi $23, $23, 0x10 - ssv $v17[14], -0x10($23) - ssv $v18[14], -0x0e($23) -@@f3d_04001fcc: - jal f3d_04001178 -@@f3d_04001fd0: - nop - jr $30 - nop - nop -Overlay0End: - -// Overlay 1 -.headersize 0x04001000 - orga() -.definelabel Overlay1LoadStart, orga() -// reciprocal method, see RSP Programmers Guide page 79 -// $v29[3]=s_int, $v28[3]=s_frac, $v29[7]=t_int, $v28[7]=t_frac -// out: $v27[3,7]=s,t int, $v26[3,7]=s,t frac -Overlay1Address: -f3d_04001000: - vrcph $v27[3], $v29[3] - vrcpl $v26[3], $v28[3] - vrcph $v27[3], $v29[7] - vrcpl $v26[7], $v28[7] - vrcph $v27[7], $v31[0] - vmudn $v26, $v26, $v31[2] // 0002, << 1 since input is S15.16 - vmadh $v27, $v27, $v31[2] - vmadn $v26, $v31, $v31[0] - // $v27[3]=sres_int, $v26[3]=sres_frac, $v27[7]=tres_int, $v26[7]=tres_frac - lqv $v23[0], 0x60($zero) - vxor $v22, $v31, $v31 // (1/w)*w - vmudl $v24, $v26, $v28 - vmadm $v24, $v27, $v28 - vmadn $v24, $v26, $v29 - vmadh $v25, $v27, $v29 - // $v24=frac, $v25=int, should be very close to 1.0 - vsubc $v24, $v22, $v24 // take 2.0-result (better rounding?) - vsub $v25, $v23, $v25 - vmudl $v22, $v26, $v24 // (2.0-(1/w)*w)*(1/w) - vmadm $v23, $v27, $v24 - vmadn $v26, $v26, $v25 - vmadh $v27, $v27, $v25 - jr $ra - nop - -dma_wait_dl: - jal wait_while_dma_busy - addi $27, $zero, inputDisplayList - -read_next_task_entry: - lw $25, 0x00($27) // first command word - lw $24, 0x04($27) // second command word - srl $1, $25, 29 - andi $1, $1, 0x0006 // $1 = (two MSbits) << 1 - addi $26, $26, 8 // increase next task in DRAM ptr - addi $27, $27, 8 // increase next task in DMEM ptr - addi $28, $28, -8 // decrease task count left in DMEM - bgtz $1, dispatch_task - andi $18, $25, 0x01ff - addi $22, $zero, inputData // command that loads data input -Overlay1End: - - -// Overlay 2 -.headersize 0x04001768 - orga() -Overlay2Address: - b perform_clip - sh $ra, data0158 - nop - nop - ori $30, $zero, overlayInfo3 - b load_overlay - lh $21, lightEntry - -perform_clip: - sh $3, clipTemp - sh $2, data0942 - sh $1, data0944 - sh $zero, data0946 - ori $7, $zero, 0x0db8 - ori $30, $zero, clipTemp - ori $6, $zero, 0x000c -next_clip: - or $5, $30, $30 - xori $30, $30, 0x0014 -f3d_040017a8: - beq $6, $zero, @f3d_04001954 - lh $11, 0xa6($6) - addi $6, $6, -2 - ori $17, $zero, 0x0000 - or $18, $zero, $zero - -found_in: - ori $2, $5, 0x0000 - -found_out: - j f3d_040017d4 - addi $14, $30, 2 -f3d_040017c8: - and $8, $8, $11 - beq $8, $18, f3d_o2_04001804 - addi $2, $2, 2 -f3d_040017d4: - or $20, $10, $zero - sh $10, 0x00($14) - addi $14, $14, 2 -f3d_040017e0: - lh $10, 0x00($2) - bne $10, $zero, f3d_040017c8 - lh $8, 0x24($10) - addi $8, $17, -2 - bgtz $8, f3d_040017e0 - ori $2, $5, 0x0000 - beq $8, $zero, f3d_040017a8 - nop - j f3d_04001980 -f3d_o2_04001804: - xor $18, $18, $11 - lh $8, lo(labelLUT)($17) - addi $17, $17, 2 - jr $8 - lh $8, nextClipEntry - -found_first_in: - mtc2 $10, $v13[0] - or $10, $20, $zero - mfc2 $20, $v13[0] - ori $14, $30, 0x0000 - lh $8, foundOutEntry - -found_first_out: - sh $8, data0106 - addi $7, $7, 0x28 - sh $7, 0x00($14) - sh $zero, 0x02($14) - ldv $v9[0], 0x00($10) - ldv $v10[0], 0x08($10) - ldv $v4[0], 0x00($20) - ldv $v5[0], 0x08($20) - sll $8, $6, 2 - ldv $v1[0], 0x70($8) - vmudh $v0, $v1, $v31[3] - vmudn $v12, $v5, $v1 - vmadh $v11, $v4, $v1 - vmadn $v12, $v31, $v31[0] - vmadn $v28, $v10, $v0 - vmadh $v29, $v9, $v0 - vmadn $v28, $v31, $v31[0] - vaddc $v26, $v28, $v28[0q] - vadd $v27, $v29, $v29[0q] - vaddc $v28, $v26, $v26[1h] - vadd $v29, $v27, $v27[1h] - mfc2 $8, $v29[6] - vrcph $v7[3], $v29[3] - vrcpl $v3[3], $v28[3] - vrcph $v7[3], $v31[0] - vmudn $v3, $v3, $v31[2] - bgez $8, f3d_040018a4 - vmadh $v7, $v7, $v31[2] - vmudn $v3, $v3, $v31[3] - vmadh $v7, $v7, $v31[3] -f3d_040018a4: - veq $v7, $v7, $v31[0] - vmrg $v3, $v3, $v31[3] - vmudl $v28, $v28, $v3[3] - vmadm $v29, $v29, $v3[3] - jal f3d_04001000 - vmadn $v28, $v31, $v31[0] - vaddc $v28, $v12, $v12[0q] - vadd $v29, $v11, $v11[0q] - vaddc $v12, $v28, $v28[1h] - vadd $v11, $v29, $v29[1h] - vmudl $v15, $v12, $v26 - vmadm $v15, $v11, $v26 - vmadn $v15, $v12, $v27 - vmadh $v8, $v11, $v27 - vmudl $v28, $v31, $v31[5] - vmadl $v15, $v15, $v3[3] - vmadm $v8, $v8, $v3[3] - vmadn $v15, $v31, $v31[0] - veq $v8, $v8, $v31[0] - vmrg $v15, $v15, $v31[3] - vne $v15, $v15, $v31[0] - vmrg $v15, $v15, $v31[1] - vnxor $v8, $v15, $v31[0] - vaddc $v8, $v8, $v31[1] - vadd $v29, $v29, $v29 - vmudl $v28, $v5, $v8[3h] - vmadm $v29, $v4, $v8[3h] - vmadl $v28, $v10, $v15[3h] - vmadm $v29, $v9, $v15[3h] - vmadn $v28, $v31, $v31[0] - luv $v12[0], 0x10($10) - luv $v11[0], 0x10($20) - llv $v12[8], 0x14($10) - llv $v11[8], 0x14($20) - vmudm $v18, $v12, $v15[3] - vmadm $v18, $v11, $v8[3] - suv $v18[0], 0x00($7) - sdv $v18[8], 0x08($7) - ldv $v18[0], 0x08($7) - jal f3d_040014e8 - lw $15, 0x00($7) - mfc2 $10, $v13[0] - j @f3d_040015e8 - ori $9, $zero, 0x0001 -@f3d_04001954: - lh $8, 0x00($5) - sh $8, 0xb4($zero) - sh $5, data0106 - lh $30, clipDrawEntry - -clip_draw_loop: - lh $8, data0106 - lh $3, 0xb4($zero) - lh $2, 0x02($8) - lh $1, 0x04($8) - addi $8, $8, 2 - bne $1, $zero, f3d_040019c4 - sh $8, data0106 -f3d_04001980: - j SP_NOOP - nop -Overlay2End: - -// Overlay 3 -.headersize 0x04001768 - orga() -Overlay3Address: - ori $30, $zero, overlayInfo2 - b load_overlay - lh $21, performClipEntry - lw $1, numLights - sw $15, 0x00($7) // normal vector 1st vertex - sw $16, 0x04($7) // normal vector 2nd vertex - bltz $1, @init_lights - lpv $v4[0], 0x00($7) - luv $v7[0], 0x01d0($1) // ambient RGB - vxor $v27, $v27, $v27 -@@f3d_04001790: - vge $v7, $v7, $v31[0] // max(0, $v7) - lpv $v5[0], 0x01c0($1) // calculated light - vadd $v27, $v27, $v7 - luv $v7[0], 0x01b0($1) // light's RGB - vor $v20, $v6, $v31[0] - vmulf $v6, $v4, $v5 // mul normal vector - vadd $v3, $v6, $v6[1q] - vadd $v6, $v3, $v6[2h] - vmulf $v7, $v7, $v6[0h] // $v6[0] and $v6[4] contain dot product - bgtz $1, @@f3d_04001790 - addi $1, $1, -0x20 - suv $v27[0], 0x00($7) - andi $8, $3, G_TEXTURE_GEN_H - sb $15, 0x03($7) - sb $16, 0x07($7) - lw $15, 0x00($7) - beq $8, $zero, @f3d_040015e4 - lw $16, 0x04($7) - andi $8, $3, G_TEXTURE_GEN_LINEAR_H // not used in SM64 - lpv $v7[0], 0x90($29) - ldv $v6[0], 0xa0($zero) - vmadn $v20, $v7, $v20[0h] - beq $8, $zero, @@f3d_o3_04001804 - vmadm $v18, $v31, $v31[0] - vmulf $v7, $v18, $v18 - vmulf $v7, $v7, $v18 - vmulf $v20, $v7, $v6[1] - vmacf $v20, $v7, $v6[3] - vmacf $v18, $v18, $v6[2] -@@f3d_o3_04001804: - j @f3d_040015e4 - vadd $v18, $v18, $v31[4] - -@init_lights: - andi $1, $1, 0x0fff - sw $1, numLights - jal f3d_04001524 - addi $8, $zero, modelViewMatrixStack - ori $8, $zero, scratchSpace - stv $v8[2], 0x10($8) // transpose - stv $v8[4], 0x20($8) - stv $v8[12], 0x30($8) - stv $v8[14], 0x40($8) - ltv $v8[14], 0x10($8) - ltv $v8[12], 0x20($8) - ltv $v8[4], 0x30($8) - ltv $v8[2], 0x40($8) - sdv $v12[8], 0x10($8) - sdv $v13[8], 0x20($8) - sdv $v14[8], 0x30($8) - ldv $v12[0], 0x10($8) - ldv $v13[0], 0x20($8) - ldv $v14[0], 0x30($8) -f3d_04001858: - lpv $v5[0], 0x01b8($1) // this light's dir vector - vmulf $v5, $v5, $v31[4] - vmudn $v6, $v12, $v5[0h] - vmadn $v6, $v13, $v5[1h] - vmadn $v6, $v14, $v5[2h] - vmadm $v3, $v31, $v31[0] - vmudm $v6, $v3, $v31[2] - vmacf $v3, $v8, $v5[0h] - vmacf $v3, $v9, $v5[1h] - vmacf $v3, $v10, $v5[2h] - vmadn $v6, $v31, $v31[0] - vmudl $v5, $v6, $v6 - vmadm $v5, $v3, $v6 - vmadn $v5, $v6, $v3 - vmadh $v26, $v3, $v3 - vaddc $v7, $v5, $v5[1q] - vadd $v4, $v26, $v26[1q] - vaddc $v7, $v5, $v7[0h] - vadd $v4, $v26, $v4[0h] - vrsqh $v11[0], $v4[2] // normalize vector - vrsql $v15[0], $v7[2] - vrsqh $v11[0], $v31[0] - vmudl $v15, $v15, $v30[3] - vmadm $v11, $v11, $v30[3] - vmadn $v15, $v31, $v31[0] - vmudl $v7, $v6, $v15[0] - vmadm $v7, $v3, $v15[0] - vmadn $v7, $v6, $v11[0] - vmadh $v4, $v3, $v11[0] - vmadn $v7, $v31, $v31[0] - ldv $v2[0], 0xf8($29) - vge $v7, $v7, $v2[0] - vlt $v7, $v7, $v2[1] - vmudn $v7, $v7, $v2[2] - spv $v7[0], 0x01c0($1) - lw $8, 0x01c0($1) - sw $8, 0x01c4($1) - bgtz $1, f3d_04001858 - addi $1, $1, -0x20 - j load_mp_matrix - lh $ra, lightEntry - nop -Overlay3End: - -// Overlay 4 -.headersize 0x04001768 - orga() -Overlay4Address: - j f3d_04001788 - nop -overlay_4_entry: - nop - jal wait_while_dma_busy - ori $2, $zero, 0x4000 - mtc0 $2, SP_STATUS - break - nop -f3d_04001788: - ori $2, $zero, 0x1000 - sw $28, data08E4 - sw $27, data08E8 - sw $26, data08EC - sw $23, data08F0 - lw $19, dramPtr - ori $20, $zero, 0x0000 - ori $18, $zero, 0x08ff - jal dma_read_write - ori $17, $zero, 0x0001 - jal wait_while_dma_busy - nop - j f3d_040010c8 - mtc0 $2, SP_STATUS - nop - nop - addiu $zero, $zero, 0xbeef - nop -Overlay4End: - -.close // CODE_FILE diff --git a/rsp/gbi.inc b/rsp/gbi.inc deleted file mode 100644 index 1ea1314c..00000000 --- a/rsp/gbi.inc +++ /dev/null @@ -1,19 +0,0 @@ -// GBI: Graphics Binary Interface - -G_FOG equ 0x00010000 -G_LIGHTING equ 0x00020000 -G_TEXTURE_GEN equ 0x00040000 -G_TEXTURE_GEN_LINEAR equ 0x00080000 - -G_FOG_H equ (G_FOG/0x10000) -G_LIGHTING_H equ (G_LIGHTING/0x10000) -G_TEXTURE_GEN_H equ (G_TEXTURE_GEN/0x10000) -G_TEXTURE_GEN_LINEAR_H equ(G_TEXTURE_GEN_LINEAR/0x10000) - - -G_CULL_BACK equ 0x00002000 -G_CULL_FRONT equ 0x00001000 - -G_ZBUFFER equ 0x00000001 -G_TEXTURE_ENABLE equ 0x00000002 -G_SHADE equ 0x00000004 From 6abfd9ec806953cb20fec9244e575feb3a71782d Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Fri, 17 Sep 2021 18:55:13 -0400 Subject: [PATCH 3/4] Add XBUS ucodes --- lib/PR/f3dex/{ => fifo}/F3DEX.bin | Bin lib/PR/f3dex/{ => fifo}/F3DEX_NoN.bin | Bin lib/PR/f3dex/{ => fifo}/F3DEX_NoN_data.bin | Bin lib/PR/f3dex/{ => fifo}/F3DEX_data.bin | Bin lib/PR/f3dex/fifo/F3DLP_Rej.bin | Bin 0 -> 5072 bytes lib/PR/f3dex/fifo/F3DLP_Rej_data.bin | Bin 0 -> 2048 bytes lib/PR/f3dex/{ => fifo}/F3DLX.bin | Bin lib/PR/f3dex/{ => fifo}/F3DLX_NoN.bin | Bin lib/PR/f3dex/{ => fifo}/F3DLX_NoN_data.bin | Bin lib/PR/f3dex/{ => fifo}/F3DLX_Rej.bin | Bin lib/PR/f3dex/{ => fifo}/F3DLX_Rej_data.bin | Bin lib/PR/f3dex/{ => fifo}/F3DLX_data.bin | Bin lib/PR/f3dex/{ => fifo}/L3DEX.bin | Bin lib/PR/f3dex/{ => fifo}/L3DEX_data.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2_NoN.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2_NoN_data.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2_Rej.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2_Rej_data.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DEX2_data.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DLX2_Rej.bin | Bin lib/PR/f3dex2/{ => fifo}/F3DLX2_Rej_data.bin | Bin lib/PR/f3dex2/{ => fifo}/L3DEX2.bin | Bin lib/PR/f3dex2/{ => fifo}/L3DEX2_data.bin | Bin lib/PR/f3dex2/xbus/F3DEX2.bin | Bin 0 -> 5024 bytes lib/PR/f3dex2/xbus/F3DEX2_NoN.bin | Bin 0 -> 5024 bytes lib/PR/f3dex2/xbus/F3DEX2_NoN_data.bin | Bin 0 -> 1056 bytes lib/PR/f3dex2/xbus/F3DEX2_Rej.bin | Bin 0 -> 4512 bytes lib/PR/f3dex2/xbus/F3DEX2_Rej_data.bin | Bin 0 -> 1040 bytes lib/PR/f3dex2/xbus/F3DEX2_data.bin | Bin 0 -> 1056 bytes lib/PR/f3dex2/xbus/F3DLX2_Rej.bin | Bin 0 -> 4512 bytes lib/PR/f3dex2/xbus/F3DLX2_Rej_data.bin | Bin 0 -> 1040 bytes lib/PR/f3dex2/xbus/L3DEX2.bin | Bin 0 -> 4528 bytes lib/PR/f3dex2/xbus/L3DEX2_data.bin | Bin 0 -> 1008 bytes .../f3dex2pl/{ => fifo}/F3DEX2_PosLight.bin | Bin .../{ => fifo}/F3DEX2_PosLight_data.bin | Bin lib/PR/f3dzex/{ => fifo}/F3DZEX.bin | Bin lib/PR/f3dzex/{ => fifo}/F3DZEX_NoN.bin | Bin lib/PR/f3dzex/{ => fifo}/F3DZEX_NoN_data.bin | Bin lib/PR/f3dzex/{ => fifo}/F3DZEX_data.bin | Bin lib/PR/f3dzex/{ => fifo}/L3DZEX.bin | Bin lib/PR/f3dzex/{ => fifo}/L3DZEX_data.bin | Bin lib/PR/f3dzex/xbus/F3DZEX.bin | Bin 0 -> 5696 bytes lib/PR/f3dzex/xbus/F3DZEX_NoN.bin | Bin 0 -> 5696 bytes lib/PR/f3dzex/xbus/F3DZEX_NoN_data.bin | Bin 0 -> 1056 bytes lib/PR/f3dzex/xbus/F3DZEX_data.bin | Bin 0 -> 1056 bytes lib/PR/f3dzex/xbus/L3DZEX.bin | Bin 0 -> 4528 bytes lib/PR/f3dzex/xbus/L3DZEX_data.bin | Bin 0 -> 1008 bytes lib/PR/s2dex/{ => fifo}/S2DEX.bin | Bin lib/PR/s2dex/{ => fifo}/S2DEX_data.bin | Bin lib/PR/s2dex/fifo_d/S2DEX.bin | Bin 0 -> 6128 bytes lib/PR/s2dex/fifo_d/S2DEX_data.bin | Bin 0 -> 992 bytes lib/PR/s2dex2/{ => fifo}/S2DEX2.bin | Bin lib/PR/s2dex2/{ => fifo}/S2DEX2_data.bin | Bin lib/PR/s2dex2/fifo/S2DEX2d.bin | Bin 0 -> 6336 bytes lib/PR/s2dex2/fifo/S2DEX2d_data.bin | Bin 0 -> 912 bytes lib/PR/s2dex2/xbus/S2DEX2.bin | Bin 0 -> 6352 bytes lib/PR/s2dex2/xbus/S2DEX2_data.bin | Bin 0 -> 912 bytes lib/PR/s2dex2/xbus/S2DEX2d.bin | Bin 0 -> 6352 bytes lib/PR/s2dex2/xbus/S2DEX2d_data.bin | Bin 0 -> 912 bytes lib/PR/super3d/{ => fifo}/Super3D.bin | Bin lib/PR/super3d/{ => fifo}/Super3D_data.bin | Bin lib/rsp.s | 68 +++++++++--------- 63 files changed, 34 insertions(+), 34 deletions(-) rename lib/PR/f3dex/{ => fifo}/F3DEX.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DEX_NoN.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DEX_NoN_data.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DEX_data.bin (100%) create mode 100644 lib/PR/f3dex/fifo/F3DLP_Rej.bin create mode 100644 lib/PR/f3dex/fifo/F3DLP_Rej_data.bin rename lib/PR/f3dex/{ => fifo}/F3DLX.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DLX_NoN.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DLX_NoN_data.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DLX_Rej.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DLX_Rej_data.bin (100%) rename lib/PR/f3dex/{ => fifo}/F3DLX_data.bin (100%) rename lib/PR/f3dex/{ => fifo}/L3DEX.bin (100%) rename lib/PR/f3dex/{ => fifo}/L3DEX_data.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2_NoN.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2_NoN_data.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2_Rej.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2_Rej_data.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DEX2_data.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DLX2_Rej.bin (100%) rename lib/PR/f3dex2/{ => fifo}/F3DLX2_Rej_data.bin (100%) rename lib/PR/f3dex2/{ => fifo}/L3DEX2.bin (100%) rename lib/PR/f3dex2/{ => fifo}/L3DEX2_data.bin (100%) create mode 100644 lib/PR/f3dex2/xbus/F3DEX2.bin create mode 100644 lib/PR/f3dex2/xbus/F3DEX2_NoN.bin create mode 100644 lib/PR/f3dex2/xbus/F3DEX2_NoN_data.bin create mode 100644 lib/PR/f3dex2/xbus/F3DEX2_Rej.bin create mode 100644 lib/PR/f3dex2/xbus/F3DEX2_Rej_data.bin create mode 100644 lib/PR/f3dex2/xbus/F3DEX2_data.bin create mode 100644 lib/PR/f3dex2/xbus/F3DLX2_Rej.bin create mode 100644 lib/PR/f3dex2/xbus/F3DLX2_Rej_data.bin create mode 100644 lib/PR/f3dex2/xbus/L3DEX2.bin create mode 100644 lib/PR/f3dex2/xbus/L3DEX2_data.bin rename lib/PR/f3dex2pl/{ => fifo}/F3DEX2_PosLight.bin (100%) rename lib/PR/f3dex2pl/{ => fifo}/F3DEX2_PosLight_data.bin (100%) rename lib/PR/f3dzex/{ => fifo}/F3DZEX.bin (100%) rename lib/PR/f3dzex/{ => fifo}/F3DZEX_NoN.bin (100%) rename lib/PR/f3dzex/{ => fifo}/F3DZEX_NoN_data.bin (100%) rename lib/PR/f3dzex/{ => fifo}/F3DZEX_data.bin (100%) rename lib/PR/f3dzex/{ => fifo}/L3DZEX.bin (100%) rename lib/PR/f3dzex/{ => fifo}/L3DZEX_data.bin (100%) create mode 100644 lib/PR/f3dzex/xbus/F3DZEX.bin create mode 100644 lib/PR/f3dzex/xbus/F3DZEX_NoN.bin create mode 100644 lib/PR/f3dzex/xbus/F3DZEX_NoN_data.bin create mode 100644 lib/PR/f3dzex/xbus/F3DZEX_data.bin create mode 100644 lib/PR/f3dzex/xbus/L3DZEX.bin create mode 100644 lib/PR/f3dzex/xbus/L3DZEX_data.bin rename lib/PR/s2dex/{ => fifo}/S2DEX.bin (100%) rename lib/PR/s2dex/{ => fifo}/S2DEX_data.bin (100%) create mode 100644 lib/PR/s2dex/fifo_d/S2DEX.bin create mode 100644 lib/PR/s2dex/fifo_d/S2DEX_data.bin rename lib/PR/s2dex2/{ => fifo}/S2DEX2.bin (100%) rename lib/PR/s2dex2/{ => fifo}/S2DEX2_data.bin (100%) create mode 100644 lib/PR/s2dex2/fifo/S2DEX2d.bin create mode 100644 lib/PR/s2dex2/fifo/S2DEX2d_data.bin create mode 100644 lib/PR/s2dex2/xbus/S2DEX2.bin create mode 100644 lib/PR/s2dex2/xbus/S2DEX2_data.bin create mode 100644 lib/PR/s2dex2/xbus/S2DEX2d.bin create mode 100644 lib/PR/s2dex2/xbus/S2DEX2d_data.bin rename lib/PR/super3d/{ => fifo}/Super3D.bin (100%) rename lib/PR/super3d/{ => fifo}/Super3D_data.bin (100%) diff --git a/lib/PR/f3dex/F3DEX.bin b/lib/PR/f3dex/fifo/F3DEX.bin similarity index 100% rename from lib/PR/f3dex/F3DEX.bin rename to lib/PR/f3dex/fifo/F3DEX.bin diff --git a/lib/PR/f3dex/F3DEX_NoN.bin b/lib/PR/f3dex/fifo/F3DEX_NoN.bin similarity index 100% rename from lib/PR/f3dex/F3DEX_NoN.bin rename to lib/PR/f3dex/fifo/F3DEX_NoN.bin diff --git a/lib/PR/f3dex/F3DEX_NoN_data.bin b/lib/PR/f3dex/fifo/F3DEX_NoN_data.bin similarity index 100% rename from lib/PR/f3dex/F3DEX_NoN_data.bin rename to lib/PR/f3dex/fifo/F3DEX_NoN_data.bin diff --git a/lib/PR/f3dex/F3DEX_data.bin b/lib/PR/f3dex/fifo/F3DEX_data.bin similarity index 100% rename from lib/PR/f3dex/F3DEX_data.bin rename to lib/PR/f3dex/fifo/F3DEX_data.bin diff --git a/lib/PR/f3dex/fifo/F3DLP_Rej.bin b/lib/PR/f3dex/fifo/F3DLP_Rej.bin new file mode 100644 index 0000000000000000000000000000000000000000..9c6235a89bf5b2ddc89c6d0285862c6e741a16fe GIT binary patch literal 5072 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 literal 0 HcmV?d00001 diff --git a/lib/PR/f3dex2/xbus/F3DEX2_NoN_data.bin b/lib/PR/f3dex2/xbus/F3DEX2_NoN_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..8b768268b228614d0c80aadff9582cf8f52f8b12 GIT binary patch literal 1056 zcmZP=;@~aF{Q=Ae-gEH$2QiWH|Njgg$b4$DgMtGT+|w!)N|WcMu^7XhF7#P8> zVq$=>m>~TB{~&xY&A`C;ALcg@i-m!sp5gx=2L={}`v3KRL>L4Z7#aS5`2T}JfI;B^ zgUjWd%?x037#X-%fK7)H4KT(?qWK#bmJ2X2FbHTc<_j=zUSI%W2ZjfXA6OI^8W?Xe zHZc5Pe88l@c!S}V-~@pR!3ly>!0>>8hJcUY4S^2=7J>@$YXles-v~|-Fc5SQv=Pt| z&=C@WLIEKV^bryeau5;_VgU0%BB)qF2n0n$F33d4NXR&dPZ94C?-88BqQK(8Qou5U z!S2AG!9Ia~2m1pK4h{p32#yAh z6&x2hesC)M{||}Q1_lEI2MCjx=miCd0s{k-Vqjo!0O@LAU=WpF literal 0 HcmV?d00001 diff --git a/lib/PR/f3dex2/xbus/F3DEX2_Rej.bin b/lib/PR/f3dex2/xbus/F3DEX2_Rej.bin new file mode 100644 index 0000000000000000000000000000000000000000..27ebaf7358ecefc678b1eb4cf9f633100ca602f6 GIT binary patch literal 4512 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 f90b%Ek|b0ZDkN0bCcp3Lf%fHlBpA+s!UKc>N^- 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 E0Mm7Jg8%>k literal 0 HcmV?d00001 diff --git a/lib/PR/f3dex2/xbus/F3DLX2_Rej_data.bin b/lib/PR/f3dex2/xbus/F3DLX2_Rej_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..cfced4018a8938ba1a158de5c895c84f4b31c179 GIT binary patch literal 1040 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 literal 0 HcmV?d00001 diff --git a/lib/PR/f3dex2pl/F3DEX2_PosLight.bin b/lib/PR/f3dex2pl/fifo/F3DEX2_PosLight.bin similarity index 100% rename from lib/PR/f3dex2pl/F3DEX2_PosLight.bin rename to lib/PR/f3dex2pl/fifo/F3DEX2_PosLight.bin diff --git a/lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin b/lib/PR/f3dex2pl/fifo/F3DEX2_PosLight_data.bin similarity index 100% rename from lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin rename to lib/PR/f3dex2pl/fifo/F3DEX2_PosLight_data.bin diff --git a/lib/PR/f3dzex/F3DZEX.bin b/lib/PR/f3dzex/fifo/F3DZEX.bin similarity index 100% rename from lib/PR/f3dzex/F3DZEX.bin rename to lib/PR/f3dzex/fifo/F3DZEX.bin diff --git a/lib/PR/f3dzex/F3DZEX_NoN.bin b/lib/PR/f3dzex/fifo/F3DZEX_NoN.bin similarity index 100% rename from lib/PR/f3dzex/F3DZEX_NoN.bin rename to lib/PR/f3dzex/fifo/F3DZEX_NoN.bin diff --git a/lib/PR/f3dzex/F3DZEX_NoN_data.bin b/lib/PR/f3dzex/fifo/F3DZEX_NoN_data.bin similarity index 100% rename from lib/PR/f3dzex/F3DZEX_NoN_data.bin rename to lib/PR/f3dzex/fifo/F3DZEX_NoN_data.bin diff --git a/lib/PR/f3dzex/F3DZEX_data.bin b/lib/PR/f3dzex/fifo/F3DZEX_data.bin similarity index 100% rename from lib/PR/f3dzex/F3DZEX_data.bin rename to lib/PR/f3dzex/fifo/F3DZEX_data.bin diff --git a/lib/PR/f3dzex/L3DZEX.bin b/lib/PR/f3dzex/fifo/L3DZEX.bin similarity index 100% rename from lib/PR/f3dzex/L3DZEX.bin rename to lib/PR/f3dzex/fifo/L3DZEX.bin diff --git a/lib/PR/f3dzex/L3DZEX_data.bin b/lib/PR/f3dzex/fifo/L3DZEX_data.bin similarity index 100% rename from lib/PR/f3dzex/L3DZEX_data.bin rename to lib/PR/f3dzex/fifo/L3DZEX_data.bin diff --git a/lib/PR/f3dzex/xbus/F3DZEX.bin b/lib/PR/f3dzex/xbus/F3DZEX.bin new file mode 100644 index 0000000000000000000000000000000000000000..c67c7180505c6f51dfe30d089ce3d3e89a9145cf GIT binary patch literal 5696 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 NI2c$rdrejM008bk8j}D3 literal 0 HcmV?d00001 diff --git a/lib/PR/f3dzex/xbus/F3DZEX_NoN.bin b/lib/PR/f3dzex/xbus/F3DZEX_NoN.bin new file mode 100644 index 0000000000000000000000000000000000000000..42de881c910b69e16807b506c2886fa86dfd5ec5 GIT binary patch literal 5696 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 literal 0 HcmV?d00001 diff --git a/lib/PR/f3dzex/xbus/F3DZEX_NoN_data.bin b/lib/PR/f3dzex/xbus/F3DZEX_NoN_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..d72aeee6e81584fad7923e611c6add5a2749e810 GIT binary patch literal 1056 zcmZP=;@~aF{Q=Ae-gEH$2QiWH|Njgg$b4$DgMtGT+|w!)N|W zVq$=>m>~TB{~&xY&A`C;ALcg@i-m!sp5gx=2L={}`v3KRL>L4Z7#aS5`2T}JfI;B^ zgUjWd%?x037#X-%fK7)H4KT(?qWK#bmJ2X2FbHTc<_j=zUSI%W2ZjfXA6OI^8W?Xe zHZc5Pe88l@c!S}V-~@pR!3ly>!0>>8hJcUY4S^2=7J>@$YXles-v~|-Fc5SQv=Pt| z&=C@WLIEKV^bryeau5;_VgU0%BB)qF2n0pMBjg^)Es#4QB_kywB_cS5MS;bGrGRAy z%K?@btOBeStO=|gtQ%NwuraV{um!MHuq|La!S;b&g57~VgM9+~4)zBe92^E55gZL1 zD>yE2{NPmh{~r>q4Gabb4iF|W(F+O^1qKEv#lXPe0MgaKz#uq-Wx3D>1_mYr5Dft9 Cs%yOf literal 0 HcmV?d00001 diff --git a/lib/PR/f3dzex/xbus/F3DZEX_data.bin b/lib/PR/f3dzex/xbus/F3DZEX_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..72d30a3da6697ae508c86242535f37868b9fd4d5 GIT binary patch literal 1056 zcmZP=;@~aF{Q=Ae-gEH$2QiWH|Njgg$b4$DgMtGT+|w!)N|W;31hZHeIO-Yx|8ZboQK5O!dA!1#ehfuVu%7Gnd$ z55@;f3XC@xZV65hs1TeWI0Xz32xtiS2;LC*AYdV=AiqX{LGX>>6afQ42SFPF9RVF7 z5hxT80zn@k0U-w=0U-u34=+dh5!E{(b~XZVBp|Dbj*T+M1g?;N-;1nfVDa>FbK|ISuV7Jfq}^YL<0cJp=yNy literal 0 HcmV?d00001 diff --git a/lib/PR/f3dzex/xbus/L3DZEX.bin b/lib/PR/f3dzex/xbus/L3DZEX.bin new file mode 100644 index 0000000000000000000000000000000000000000..8f1654edae1435d1e36de4e9af742480500f79af GIT binary patch literal 4528 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 literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex/S2DEX.bin b/lib/PR/s2dex/fifo/S2DEX.bin similarity index 100% rename from lib/PR/s2dex/S2DEX.bin rename to lib/PR/s2dex/fifo/S2DEX.bin diff --git a/lib/PR/s2dex/S2DEX_data.bin b/lib/PR/s2dex/fifo/S2DEX_data.bin similarity index 100% rename from lib/PR/s2dex/S2DEX_data.bin rename to lib/PR/s2dex/fifo/S2DEX_data.bin diff --git a/lib/PR/s2dex/fifo_d/S2DEX.bin b/lib/PR/s2dex/fifo_d/S2DEX.bin new file mode 100644 index 0000000000000000000000000000000000000000..1551d98588b78780dc09325e10948c6272cd694a GIT binary patch literal 6128 zcmY$8W8C1yz@T&bzCz9EdkVFu?<&-tzN1jDz^%dH(5=AWZOag#AkMm?hnxS1VKxJ! zU;+c{8V3F&J<_ZyQ{U5^f2?kaA5LaU`UEkl1*S>abOH!5Kv%XVqjok z5K&^_aNv$$FwACQ5KZ|1SAm;>(V;tnp@)h8jYE?IgF}-C!x|=rD?N<-7kZeOKJ+j% z{pev~W?*m>P-IAyP-JLSP+Y^r^kEG%(~mVQ%nZC>JNZ8-2r=552Qz^9Ull}{AE-w$ zI`A^Ee^ikEcc8hFRl$Kbs}@*8e#q~CfW=Pj0p@J>eUP!6Brq8_AoQtVP?=!?@?k}utbvK21A8{3PXf} ziooIjw;5awR2YsJsIF0CTF@iGaAN`!!v*GO2?bsT_P)u9tdb%M|4*A$F)%22|KGt{ z$n3brnNdT{HkM{Qm<>xIYcGO$W zqvwRC0>h+k262zm91LCzT+6+>ymY+T_>OxWcjWhK7yJHr;qYTdM9fJcr$BefYmNCJL}bCcHZle-C3_gR{STJ1Po3vi5Pk{ zxjpvq=3p?)Vc-{R_+Mq1!|*|{;eUnKBDV)f;w4b=BJWy<39nDcFnD=5=A1qx!Qkbh zxW+31A~izDub(l z>bge^46pvOF)*;1GB6xBP+j+ofo0J{29{|p3@oqy3NcMVzZp;bav zA$k9wb&nZ%7CmI(dG(h?Kiy2u1yy3KH^gBecY$m`(#M5cRb4k@Azyt@AzbXFTuPcUVs|ZD&-;EdoA>=}fA9M}Zr=B&^m}uq9r5PMJL}DzcFvnS@4UBdcb~WI z6-x(6TYb7QqNHQ>Z*J@ngWMEbDt~Cq*l?{UtEAWV0 za5AuWC~z|f5GuRa6&T7v<(IdMAh^8nu4P=|ts*4o&BA!WTgj;aT3!`E$}6uBP1vz-P_sng4b!YD_*BGCY<09FgU>>V(7I(V1ZYMR-jjhX0jJ2 zQ@R(E-eV6(4h92720;;pe}P_W{f>k494PO_#U1gE3p?vwA9c>_IOjQUWi1V_e@^UP z9a*eiD=aU1FlsP(FzGOOFbgnvu!t}iIPw2yVB}_CP~uQEXyO0Qz%0$ckRqY#!J5f1 zfr;UyffIv*fCB?FI8IqL8bIa81SW>d7ETOI3z(3~G9NG>T$a5)BE-;tih*HL3xmj{ zHU`mY?F<6bIv9i|bux%Cu&6pPu$dfSXj4#SV7GE$Xjf2W=ul8y_XJv&ar!baYI&%x zd&$7E=n(_Uw03A&*1^DI@Vx#9SPzH8VTKn5stU*U|5^8pfoIVp2A*|~83bPaWt*_> zA%n=GM+_pbo^$ZLdd|bU>?woHtGB%Tpt?)#JA(o!UQZwAlsbK!SNik`4vEtzcqF~$ zgIpmI)#G>8t2?mItJ~Ax+r>%1o7qXj+g8)hTis(bCj;v}@8ubr!QsXLZgcc0h_Hg% z8($TK7}QTN2^oOe9w(T@3{Q0^Fic=%jrP9hbkvK2T4DGwPyuy`i5Mr{e|h`oMEu>}=q=N<@Ky$%`vez?<9A*f5)+!@E}Rv1r2I z(_Y+~=~I|kV;WdlLu{B$1sIrw92i_RR2WhvRM$NQg|`SJsGeB&fPrTMD{I&UHrDV7 z?5vSJEKEKOtP%|jX%ed7dM8Ojm4Q8$fuUOgqz@F%0_&bIh$ww$kYHdlIG}KhDdEH+ z35HW`oI>97HC??~gfzU6ki{9asKg5F$0E#CK?SiNh1@p&_N z8NWWw$@uyVCqw@s28JF9)&Nl6WMC3-Vqg+Dzz{5;V3y3l;GHfp!MmQLZwf1`mj{~; zg9p1Og9nEcg9oP^g9n!og9oEM0|SRMgTd1Oe;C*d8W@%-C`mN@?PlN#W{`Nmz+}Vo zgh8R@{~w0N2qnn`1|~+I096we28ITH)=7*sfvrpU6Uf%S^A#!ca7O<<6H!@#`yg(}0c233Zs3Q8=E3<4f4 zf(+hD25sK84Ch}T;$(b%n3JLZGy?V*K;tA8TgybSC!l)f_d0|pJ4SvK6J0_$Eg z2-xtjF|2#TAYvnH%&_h+g9HP+g%bns3MZ!JE0h>SqZ<^nKQJ)nfbEcZ^_N9q-8%-2 zb&nZzp!yA#ePu9$nqji;FM|aGJBl6~rSA+8ul}-RFnWT_`2PXo-v3`-y%4Aax%JgQ zk$Oc<1{MXy|9>PD{t7a%M;u_t7El1iDJKKlI|W8~ezO3zPmPTj{=?d*4U7zzP9`fb zFi4&~1j>KymJDT+ni=@}+8IRpS{Vd-QkWJnJaABFSZ<)g(C(oksLG(u(BYxNsOF)% zCX;D_0{8z$(L@I31>BG}9H?zPt%ZT>)n5*Vz8MTG%bqYWfzt4_W(JORpBY%1Iv5xy zwKFhHYGq(nXk%bxIANf|z-D-Wf!&4yoWIh+d6DDQUp5XF1qS931 z!@#P?u{B)m49JmcYeY}65J|mL?1BXM8 z2Lq^Iw?>*(WsMZ81}_8qtTl|>e|m)Ze<+ABFenId|5p$U0P9!(&%mJ|=m28Ra+s(9 zvYyvQkda}HJpT$#2KJ+7h7KSxvax~;14EB6!vm#fzrtBA{@=Yun2`sRW_s8dt~j)L zFenQ%FszZ_zrY-QL4i5ug3=l({tpTw0u7+BR}kVC?-6F?0l68(H#YkJUxAVTfP%b0 z1Juv|K{O~17#KPf9Jn>W;Q(^1!xRPvIRyr0hshiaAbE#L0#I6lVT~li4NeA@ur(44 zccAox9!Z7=>wYls^e{2pS@)BHqlb~<#=1ugEK1)Q1VHuPx`+QifclOC4*$0(IQ{># zfQjJ(sE^na#i#+YuQ!pQfhgpn!8 zSP{&2Si;B@V$8@O!NADj)T7L#V9dx+z`)4S)T6}2u!foO4Ol-DqXLgm2ekdi0pg=$1s*w2Sb^Gy9H96D)zJ!!tQjcvbh84( zsTK~tQ!PCF-u8;F-nBpbyjh$KylWjldAB4Pc-JO=^0wtW<}L4b##`R0dcI>`i`~u`I59AKEw<(b_j^Efe7Dq9uO4PW@7iQ#@7k#6p!Sy6Yw1Am zY`F{G(E*>mn1uqp9!XvFddqdryVfh&yEf{v*U9WauhZFqUMD3cc-!VZ2DKqUb-!rB z?@F(?!UEoJD>i%27d!ewiHqTd4i}?<0|V0wYcWP|@1SDu`x0$lCzaW}Yk!^h{+G<= z{V(dgS2Ndn59SC44^}}250)5)9(L9Q4>nN-hSUfp)&vGtkLCylhExe9g%$<{P6mz- z3eOo77}~&cEFLW}3=C}wN}LQF-x;1+D6L^Zp$s8_*lRW|q9&H&6-pR^s-nGBad&lG*^Zr+M#`|COS?}84 zecnoCSG{ZN9(XI2J@@9}IOlE4cidY?;_M4$4pwhw=MUbs&YQgJ^NxG_)SdD6DdF|D zX?F9j{c+yABkzcJhum53_G~}zc8T*ZlsPzF=yGtL(Boh~q0hnQ-BEVLyQA)`cYAT4 zcYF1D?>WUQyqVoTdGk7c^saR>@?tML;>BKf){CRW&x@m`-#fm?%{zWdzqc)qzn5U< zF)u+WelPa2t6m&+kG+I?mU|0j9`hEG;`g3oli?*;a@C8YR?ypi-Vty6#SnkA6t{V| zRG;^@l{@ae$L@ulg9A(BR;Dq0YhWEnjfd`;Np5Z~NjFZ+oc!`5G^J z3wVC!WZ=B>LS2BXhnuwrH0}T@7Z^*xb?c8;e?{thxLG^aeFT>m66;?7fAQ)sdw~u2 z7lw7O|Nl_RX8XVF_5VK%LJpQvHZp+v5=xv5T%iohG!#50A7Efso}eVEI z85bG6Ev_B&uKnl#`Zg!y>zk0a639$rAqGYv2L@J#)d^tpylt;dWb95*0-1Nhf{PDi zws*v_i{AI{9rd<87U&^-g27wjnwz)ny*`LN7a2?^GB9|EoMZs=g>N#*Gcd3*q(~@% z!VpxpfWn58fpZ@y{6PK$`&$U??_^M!FO$G94diDA<_IN^?i&nKxLI3zSXl$SE$)Hc z%&=NR;q`3}#wk3kb6(%%0JrlPawHVMVYOOAK|x+=3nv3RxX+-#Bkn?M*>ysfgZG3X z2alIf+c9t3vUA?Hb?3e1`_6jHXYqKiat`!f0X!@PMSR(RKo9rLdD=mW*;6du+h8>YVk z4BQb;irN4FGk6QAu3=*Buwnlyz`&E_!0^UGbqzaf&${Q3zR9}h3>=93AL+orlW+jk zu3Yq*fpY>kYh(`(lMe%TECWbv-D}WzmJrLj2atZr6lPYhDcr2{T3A>o^f0m3^zgG* zOyOhAV_=qOTEfgahap=+sfUeq$`p3ij42$fSyMP!a~RmI!TksZrmQB}1q{OAIwD0v zNhX28m|>ZQ!U=T_en@;;GJxY!-4ax`^S?gM!T9 zsFzS+JX@f|dXRzNz=`?4N8b$wZ)rua-YGn+lU|?TVR(I2iWZ;f!X6RN> zVCVtoDJI5s848Lm3=EtMoMnu<0Sd4FvM?}kMKmyGfbuW{sO{Lnz!}lNm=5Oiyn4jJ z@#--L=c^|iT(6$+fZO+=aX!fdKR+pYGB7as3n;X(uuke>W1Ydtz@_WOEb#{HS1beo DZ}lIp literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex/fifo_d/S2DEX_data.bin b/lib/PR/s2dex/fifo_d/S2DEX_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..828a5f3cb2f8d88ba822d978b70d70047e14ed85 GIT binary patch literal 992 zcmZP=@_?0rfr0tJdk&ue5U(^aL1;`;$RwpHNr)~ zP|v_zAu_)>BeNtiJ5eDrvA8rhza(G5FEg(sH7_M!kBftW!GVG4|9=Mt24)71|34TR z8W{dDFfa%(urMevFfrH)FfbZ1FfgbyFff>^sA>HF!@|Izz##C4f%!j!{Qn1-zCsgW zWMF{#k%18+$HKq@VKDyx$Dr^Z98Q7}LMy~mrl)`<1Q-+;6c`*B3>Xp^82*1@5MU5t zP+%}&FklE_VEq3N1Yu_V{{z;+`2Rlx^ZySF3=AL^2NT2p{|t-_><2$EFfbV~IdCv= zFt9LyNCtZj1_1_!1_pVMC5#LV{2+^%7#P?c7#bK@7#ROEG%);UWMHUgVqmZbxs-*0 zi2+1|?ZG4<+p%PgQ2*h+0DI%bt7AkXvN;4R?GFH6!0rKJh{r?#+Fg{>-!L$GX DYx{!+ literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex2/S2DEX2.bin b/lib/PR/s2dex2/fifo/S2DEX2.bin similarity index 100% rename from lib/PR/s2dex2/S2DEX2.bin rename to lib/PR/s2dex2/fifo/S2DEX2.bin diff --git a/lib/PR/s2dex2/S2DEX2_data.bin b/lib/PR/s2dex2/fifo/S2DEX2_data.bin similarity index 100% rename from lib/PR/s2dex2/S2DEX2_data.bin rename to lib/PR/s2dex2/fifo/S2DEX2_data.bin diff --git a/lib/PR/s2dex2/fifo/S2DEX2d.bin b/lib/PR/s2dex2/fifo/S2DEX2d.bin new file mode 100644 index 0000000000000000000000000000000000000000..a4b9d4c0454a1c8bc98918f860ae5742ce6cb486 GIT binary patch literal 6336 zcmeZbV9+@suOM+kPC@d7tb)`D83kztImQDD;w%Te7#IQ+#Mp0m*E0n6a5H@9;o(1` zz^K6>n83j1(5S#**u%gm*uWsShJpVG2Lnq&j}-S02kr<4!)yjd(F6u=2PO}O9%lX* z3`r46vIz|A4vYZ|JuLih1QZxp7*ryZSQ8nT7#J8BM3fjfAo^GsL=*o1Rp4e|bm)#? z=waf25;Lzm3u!f1@Lk~B@7tsU;rXFto2Wz+)zVtBiU+7_CX6a#O=ILQ!7U^MS zmSJ!dP+&-uP*}sn%(8}=nTMfKL4jeRhQb;aW|1|l%rZTa3@Kv@qbX@ zX66C8fro+pt@#@U1_fb;<>nC#3_J|%-&90cB-EoARwzjSkKkco|Kz}^z|ddGazHrY z|2G3gh6V=7G-d{#2#2ZJ%mpF}%oY6=EJv851r*e)88{dd7&z82@gG{afPqQKfx%Tng&|c!b=_kIhF5<@7+?JrVp{irfoB3M^RWqR%*Q9N zGoS2XVM<|Om1tl{lTc+~mN~$XB%#W{9?QVctpL&|@aiv{z`7?4B1+#GBpBEX4k#RB zDmigTg5gvfr;zu2O;>LgAr0?zu0C%TAs6pfqjLfZ3{2j&%=}(lT!P+QLM`6+omjnV zfAM)Ucp1Mw&B^%s3@1bXAqIvX31(1ShB7b-I598@9AJnLP%vj^VDL_tnBZN{(Km&a zd6x&94uc1~CxZuv6oUt+9D@g!5Q7J!Jp%)WGlRj>|9=?R3>p}gDJV%a{O@4k3TBXa zz`$g~^Mpa6<^Las#t0?J1O_HXp8!=86$XX|e&(Z7c$u$EVPn3;`jCNT3M=yk57rETD4zTO--g>(fbn#JDg%EVgUQkY1_oAb28jj+Jq8sHr75z^*T8y3 zna@q(X1>56`-Xve^$S&oWeutfQx%k08W{vUS_B!ql?>XvYZ=bJKE%oR`YIPNi)&KvQWd8vfs5h!s$fQ26fzGDqS8g9gkj8*Wp9b*~u&Y86Vvh)N(`dW4T{+x7#MTFcF4T?%c8LE9fQWY#|%19{RYdvG8jS4Fj@DP!GeJu zMURcrcZP^pe_1jZJwayt{{V6C|1Ymz2-Jbx`s$xZy`m-qi-O|+KN1T6B^cNv4lra3 zD1hRMgMsCb0wX9NgY(e}P(Cs?X81pao5|($5efDNMy7QqlNA^kB+niK<*Rl}CZMsXF-wXzpWltEGKzVptGXuxE9}Fx_9Sn?<+8LN8wK6a( zv@tL;oG?&fU^6_xz;43;&Nu1cJjU_rFB=Do0t54_zaq@9{;~^z&241hVPMr`Sof4c zfPqE1fuT`B6_lS|{bdmWg###GF)J`|D2Om0P>>f~qrlDZe9>zL29RE+Z=f{H6z#xc zz|bSX@IkehSwgho|DPTn{x=RYJQ$dTBNQ0B6O>pRQOn>S3H}!j+yM-N761Q%%14J8 z4h$eZV+F`O1}4U05dHr*NdFpch7U@`|Nkppx%0y68V>^p1N%3n>wjK=^nt=aL6|`t z6#gLh!NMOD<|mUS7)~`QFic=#e9^$n_=dq*K+V93v4Md};E;kN(*bW4!HeF`iW9t3 z1OvR4oD96B9gVyfB^h{2CmMONIEi@IDhhaY*d6g|vFP=#z2)aECwA0Z&ZFmqrUJvH zZU%9W(;N(53|z~-y1aC}+4zoo9e3pSYUMlbb;z^dyO#0%>thNGr;o`noIWnWc>0h6 z)9Ire5~q*yNO~u026!`TW`NZ$GCS+lWOm-`k=tFfy&TP-I|Qz{s?|fd`VdM0CLXb!y)kIHs^OxlL+f5Si4> zAUdsuL10=dgV3Zl2C<&!3@i*xq7LBl*I7W7fknxI!9_ro!Bs$Y-6IBuSAW?U7}!i1 z7>*mLu6xG7vgjcL%d{2-7EpOUt(Aetpr!r?SP!elVTM)-RfXjJf7U%_;92yLf#=m< z76G;I3=-aUjIR~A85BU_s=&kW-0OtJa<2}H=Uyu;)4g6;F84UY!Qgd7V7XU|#B;AD zn(1Co43~Q`X$pEVNnZ3~783Mg)(Z4Ku6Eq}h}(H@uAsTz+EI7Ck2n{2*E$<{afMy> zKJH!MUF&V+egEDAZ@JIQy-x-gc-ICSdF#a;@zx9K^{)MO&fCSQ*xTK!*o!AS#Je_G z!25_xvG;MGV(*h7#oqBO6TIWI-Mr(I`Mm`5j(7>C@Osz&KIg^HeAP=}il7&N-VrbU zw6k6U*?wLE$^0Hnfei*u3=Is90;(oXTnye`ZlAopLkzuZgFkt3<{k6mOgrzb6*SkI zJL)dn-8#v#-n`kd-Y#~>y*<>m87G#5*AGthawMpSORuzjr|25$}L$ zXTAM<{Jj0A^m{N%F?i2szTiDS?1=aLC|?F<=?3pwCO+@|f*M{djDp^^aSyz0S=7Cq z>W+CIapLnn;^pssq>>GkPQ3+Ou6Wn_3V7?K9r4!7_Vup)&F8Jxcf?z7O0ReAA3yK= z$!y;Dv;DpA_qciApVIHmm3G9NEAOl~ciK5`?!5Efw%vW+wv*3$+ln3cK2mnZ`$*kc z@8czW-p6bGmx0p8Q$EI5kNKEhJ>p|t_n3j>)oU)cSFgC(U%lkuc=dvV^VMq(u2-)( zxLA^+}rZ)jMgfS0AOh zg%$qYQTxu2;9V;*K|zv%!Mj%D0tW+|g?FuC0H|yjtXP3ZdIARn`&$KWW*I`|7rO#O zIj9Wtb`b=Z8Q!&wE4)>N1ie`pFL*0C6+p|Z0!W$V6#^==yycvZdDk-adv(Sg@#+ja z>(vr<&Z{M;e+oB~+sPCO2CoxV0p9goe%>rzZr&=wY@o8tFq=V8HJhOvl=r+iEuVYw z2&a2HTVC)wZFa@$l*WY9CjQ1xKVWSGFjaMHkuK|#QQff*dH zpf*wR{y!6#nATf3F)%G)LMqREz5SrA< zAjZI=>cGHea)6;tL6w2s%7LL>L6xBcT=zlBGfrOyMlBE3buSrM7CmBMnbr<1&pH@* z44&8j0PEp!ILz?EKvm(`{y*!UG4Lz`wS^utfZC)J);(kpS@eiO$L#c$Yn8 zka_i%m!E@yb&A?|1_e;Oo<7bgb^183^yw2E5~ok_NP5c)xq8?B>ho52Ht?2q`sBSl z*}z*m>5~^X-!X67WIk`(sPo?TmPfs7fBShc%QH5E!)=rpv>~9tBfy}*&CJqU!N4%Jn1Kb0MvK=52BeLfZ9?TP`(C(!xRPvwgv`fhZ!6UV7bWxP+Eck)IL+qVHRhd z$T%J3aZtMm)J|hjV2}c}&qNd$_?e?GDD+pb>{%nl|6z>;{{3c~#EJrWEz zR74mXjE(vKGm9Kh0Esh|%uwQBVE?2bFVND%&3|Ey6!(uc+}wW@cmf!DB=~m3!?aEIW;j`F}8oENF(P66A03=sw@0*4u*7+eih7>*dIu2Ey!&?CWc zVFDw=JqAf(aG#AiT0()vfx*jMih*H`GNXlpA_EHt153&RMuvMJbpi^^r$Fs`4h9z4 z9xFx*21y>KDM}h`43Po~Ap6&V`{*p8(@mH=CKt2pgt@Ob`GbfJQv(CDk^nn{Bo`Bd zk^mcngMd0il7tFFg@o$bQQDgF=k{aU|{5E>QQ16S;Nfu2kZtW#vdo7B_vKr%SiP|GTc!5 z&LHsWw?y5m-!k=}HvhVx3=E*M1k?@(_5T?pVw()J8Eks98GbNG9AaRQIK%`>56s*L z6xKl9v_^vA3@rSS+sz6*VsD^zk_bp%fk(^(#s|eYXpBICk@*J7I6<=l!>JYyzEdqc z{NDD8uHLmj`@C7447_U{KY6z#8F<$we)6{EJLWC#cE(%Y@+`QIJzwsackQqK2~5nV zz3cgoc`bH3W8lQV=(X6I7u@~=jWKjfUG?f=7WA%7R`#xqdJZb{yZz{bn)%tC1mJM#yI_6Q{g?ns9<+{{nB-h%D&huG!iKY^Pm!!VnH zgMr)NkOzwg!vZ$u2MlbH4hk&{+zcrR3XH7@T9!Qwj0<>}A5P$AJ~n}e`8Wf2go9!> z(-H=rga*YPrYR?LxEN0M2rziGWiWUrE4O*q{yy&=lXuMfU)dS&f7NHbYk&87E0taK zuC06EtyK2hn}_3^w=LgsZykxVFO)f0y_uaqc-J~_@~+Q2?(I`|#@nZa*W0Gq&Aax; zdGC(ABiH&c9IR;CP|S!FfWDgZ+d)2b*_C*%9xKy0hNx#eLrG)#ttE z6tD1RcKhVb>-f>T*2&0=z3hk=d)-+tjuJmFj+%b&_#QX!_$mF~wmkk`f|1f}@B z*vqbZanwEb66#s*EtGl8TS$uEdyY+pmte_NFOFJ4Z~J*iyzLi5{Lxa}=G{_#-rH90 zxc45r7v8pc=e+A@p7X9>#Q#ErgX@Jl2e-F;!BOu!5-+^%i(91Mc)_r7P0rh*=z5f5=)nE1k8}2U*>t6r= zp_I+`f7$E*e;9-!8Wgkt{|Du-Wv~DLo50QdU;+>GLx%1X3Jf_1l$a&KX@Px;F!LjG zBhWYjTfNCf22gtjRCeYtEYnc%n0$bNS$Tqzlmi2wLJ0#yk0A4bDcsCojOH^i3O`_A zWzz0Yn8MBcO=-&i|4Km&j7-`cN*+^gFnCMcJI2GnR_P&fgF&!?LH2|NC%?yxiwxct z*N%DD{_}r*o0IYNO~{xI$V_7)21X$V23CgE31IWQZLduP^~pizov`5I1DWj|aqOb^ zy?aN!t&atI2%li^mbm8TZF{c|V$Vee(}@fW9wH|hz|td-;B9da>}H158Vav( zb1+WfVc~gwlLI^+#gHSRz`?+t1Cj&PPYUwlJRIZg9AYmtI3->vafrWA;*!m8>YVk z4BQb;irN4FGk6QAu3=*SVZ;7afPp8;f#HpX>Kbz*@kAj*J92L_&m z1E4XmMXwn+CvY>L?BQWbVc?Es0Ew-84eDD9v8;Ol85^C#%)Dy~Hw#}23kyRJ6Z4xM ze&!cb_?Yi8FiSKoVP@fB$d*v*VPj#L!p?kS3J3G8DV)rA7}%}BW0?$0SxvGF7=%G# z3yOD{1O{Vl2W8oWjHWWr{ot4=5fP)@Xp@ zw1%NxLV@vYffDOM27Uu4=KmgjHyFI76~TI^@USqwKEcEA`Zy0GXk1dEg@KWQJF1zX zTS0-L2b`~%7}sSeD7Jv=Keir5-2jDGe_0q9xFQ-DGeG&60W{9l!N3{Oz?cr^^SpY* z!SU)b2j{CN99*xS@PNl6L1PY*2mX9e^kiUQ@E1^MVPRqFVPoOoU|@IgVwQLV@+$!8 CPysst literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex2/fifo/S2DEX2d_data.bin b/lib/PR/s2dex2/fifo/S2DEX2d_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..81278d91b848604880dd857846b470741ce62bdb GIT binary patch literal 912 zcmZP=;@~aF{Q=Ae-gEH$2QiWH|Njgg$b4$DgMtGT+|w$egA>zIV- zEnmS%&%i=KAu_)>BeNtiJ5eDrvA8rhza(G5(9+UU!7nqfBsDK3UyqA{gMq<;f$9H$ z2L=Xa29Ezf7#SKE{xL8x2r#fPC@?TF*a|Q(8Zj_1s53Ayn5w90{Qtwkz@We&@P~o< zKZE@L2L%1Zh@=9_W?^7~2r~Zv$Dr{4KLZ0R0|Nu|0l_um4AKW?9{@`VFeor6FgP$6 zFeETA{Qtrrz#zh)z+l2)z!1W~`2QaWGC<8^@?eVi{|Bs#@&A7Y=KmiU7#Kh-4km{G z{}~t=*bjbSVBlcjU|<204E7uh0t^fd4DujL7#SG&K^8GFFt9r?G%&C*F#cy~VEE6- zz);V`z+ew@Eeit^1Bh;50^5R2K->T#5g5c`0J{#vVnkv=L_s7(25J(21H*IyP^e2V z)`Mua1a^I~2Mi2?GuYL|9!M_`m>{r3evLqgK#kxU0U3cE0$T(m1SAAqpwK}O1Rn@G v2o?xB2x@?NAQ4m?AP9mk(hI~M2(A%O5lw(V=_x`I0xuXJFn(b8!L$JY0I6+C literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex2/xbus/S2DEX2.bin b/lib/PR/s2dex2/xbus/S2DEX2.bin new file mode 100644 index 0000000000000000000000000000000000000000..dc107d35c2afd72ce4a7849dbbdfe43303c2f45a GIT binary patch literal 6352 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 literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex2/xbus/S2DEX2_data.bin b/lib/PR/s2dex2/xbus/S2DEX2_data.bin new file mode 100644 index 0000000000000000000000000000000000000000..44621abaaf9285245066a716715a3124647c48af GIT binary patch literal 912 zcmZP=;@~aF{Q=Ae-gEH$2QiWH|Njgg$b4$DgMtGT+|w!)N|WBeNtiJ5eDrvA8rhza(G5(9+UU!7nqfBsDK3UyqA{gMq<;f$9H$ z2L=Xa29Ezf7#SKE{xL8x2r#fPC@?TF*a|Q(8Zj_1s53Ayn5w90{Qtwkz@We&@P~o< zKZE@L2L%1Zh@=9_W?^7~2r~Zv$Dr{4KLZ0R0|Nu|0l_t52c#QjH-IGt7!(*37#tW3 z7!nv5{(oT*U=U$YU@&1YU<2$EFmNz%FtC70273+$0S1N!26>Prj0_C?Ad8q77}y;c8W>m@82>XgF#Km^ zV5nzeV6X?dmW6?d0Yo=2fo(x1AZ`GW2n=E|fL#Y-F(R=bq976?12u`ifnm7-DAY9= z>p?V|0=vH00tN=b73}I_3#1bSCI~E%Un3AAP$RfTKt^DPz!m`s0SQ4DD0C16!5e}O uf(3#Of*N2RNCXuJ2!f!Cbb{Cd!8HOZq7e`%9U>$k@PhFH;|GQxOd9|rd~4tU literal 0 HcmV?d00001 diff --git a/lib/PR/s2dex2/xbus/S2DEX2d.bin b/lib/PR/s2dex2/xbus/S2DEX2d.bin new file mode 100644 index 0000000000000000000000000000000000000000..880804a5ba9d84a96ccb01493cfd1ff92a9d9ad8 GIT binary patch literal 6352 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 literal 0 HcmV?d00001 diff --git a/lib/PR/super3d/Super3D.bin b/lib/PR/super3d/fifo/Super3D.bin similarity index 100% rename from lib/PR/super3d/Super3D.bin rename to lib/PR/super3d/fifo/Super3D.bin diff --git a/lib/PR/super3d/Super3D_data.bin b/lib/PR/super3d/fifo/Super3D_data.bin similarity index 100% rename from lib/PR/super3d/Super3D_data.bin rename to lib/PR/super3d/fifo/Super3D_data.bin diff --git a/lib/rsp.s b/lib/rsp.s index 1619a1da..1fea219e 100644 --- a/lib/rsp.s +++ b/lib/rsp.s @@ -13,7 +13,7 @@ glabel rspbootTextEnd #ifndef F3DEX_GBI_SHARED #if SUPER3D_GBI == 1 glabel gspSuper3D_fifoTextStart - .incbin "lib/PR/super3d/Super3D.bin" + .incbin "lib/PR/super3d/fifo/Super3D.bin" glabel gspSuper3D_fifoTextEnd #endif @@ -21,20 +21,20 @@ glabel gspSuper3D_fifoTextEnd #ifndef F3DZEX_GBI_2 #if F3DEX2PL_GBI == 1 glabel gspF3DEX2_PosLight_fifoTextStart - .incbin "lib/PR/f3dex2pl/F3DEX2_PosLight.bin" + .incbin "lib/PR/f3dex2pl/fifo/F3DEX2_PosLight.bin" glabel gspF3DEX2_PosLight_fifoTextEnd #elif F3DEX_GBI_2 == 1 glabel gspF3DEX2_fifoTextStart - .incbin "lib/PR/f3dex2/F3DEX2.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2.bin" glabel gspF3DEX2_fifoTextEnd #elif F3DEX_GBI == 1 glabel gspF3DEX_fifoTextStart - .incbin "lib/PR/f3dex/F3DEX.bin" + .incbin "lib/PR/f3dex/fifo/F3DEX.bin" glabel gspF3DEX_fifoTextEnd #endif #else /* Fast3DZEX */ glabel gspF3DZEX2_PosLight_fifoTextStart - .incbin "lib/PR/f3dzex/F3DZEX.bin" + .incbin "lib/PR/f3dzex/fifo/F3DZEX.bin" glabel gspF3DZEX2_PosLight_fifoTextEnd #endif #endif @@ -64,14 +64,14 @@ glabel aspMainTextEnd #ifdef F3DEX_NON_GBI glabel gspF3DEX_NoN_fifoTextStart .balign 16 - .incbin "lib/PR/f3dex/F3DEX_NoN.bin" + .incbin "lib/PR/f3dex/fifo/F3DEX_NoN.bin" glabel gspF3DEX_NoN_fifoTextEnd #endif /* Fast3DLX Text */ #ifdef F3DLX_GBI glabel gspF3DLX_fifoTextStart - .incbin "lib/PR/f3dex/F3DLX.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX.bin" glabel gspF3DLX_fifoTextEnd #endif @@ -79,7 +79,7 @@ glabel gspF3DLX_fifoTextEnd #ifdef F3DLX_NON_GBI glabel gspF3DLX_NoN_fifoTextStart .balign 16 - .incbin "lib/PR/f3dex/F3DLX_NoN.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX_NoN.bin" glabel gspF3DLX_NoN_fifoTextEnd #endif @@ -87,7 +87,7 @@ glabel gspF3DLX_NoN_fifoTextEnd #ifdef F3DLX_REJ_GBI glabel gspF3DLX_Rej_fifoTextStart .balign 16 - .incbin "lib/PR/f3dex/F3DLX_Rej.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX_Rej.bin" glabel gspF3DLX_Rej_fifoTextEnd #endif @@ -95,7 +95,7 @@ glabel gspF3DLX_Rej_fifoTextEnd #ifdef L3DEX_GBI glabel gspL3DEX_fifoTextStart .balign 16 - .incbin "lib/PR/f3dex/L3DEX.bin" + .incbin "lib/PR/f3dex/fifo/L3DEX.bin" glabel gspL3DEX_fifoTextEnd #endif @@ -103,7 +103,7 @@ glabel gspL3DEX_fifoTextEnd #ifdef S2DEX_GBI glabel gspS2DEX_fifoTextStart .balign 16 - .incbin "lib/PR/s2dex/S2DEX.bin" + .incbin "lib/PR/s2dex/fifo/S2DEX.bin" glabel gspS2DEX_fifoTextEnd #endif @@ -113,7 +113,7 @@ glabel gspS2DEX_fifoTextEnd #ifdef F3DEX2_NON_GBI .balign 16 glabel gspF3DEX2_NoN_fifoTextStart - .incbin "lib/PR/f3dex2/F3DEX2_NoN.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2_NoN.bin" glabel gspF3DEX2_NoN_fifoTextEnd #endif @@ -121,7 +121,7 @@ glabel gspF3DEX2_NoN_fifoTextEnd #ifdef F3DZEX_NON_GBI_2 .balign 16 glabel gspF3DZEX2_NoN_PosLight_fifoTextStart - .incbin "lib/PR/f3dzex/F3DZEX_NoN.bin" + .incbin "lib/PR/f3dzex/fifo/F3DZEX_NoN.bin" glabel gspF3DZEX2_NoN_PosLight_fifoTextEnd #endif @@ -129,7 +129,7 @@ glabel gspF3DZEX2_NoN_PosLight_fifoTextEnd #ifdef F3DEX2_REJ_GBI .balign 16 glabel gspF3DEX2_Rej_fifoTextStart - .incbin "lib/PR/f3dex2/F3DEX2_Rej.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2_Rej.bin" glabel gspF3DEX2_Rej_fifoTextEnd #endif @@ -137,7 +137,7 @@ glabel gspF3DEX2_Rej_fifoTextEnd #ifdef L3DEX2_GBI .balign 16 glabel gspL3DEX2_fifoTextStart - .incbin "lib/PR/f3dex2/L3DEX2.bin" + .incbin "lib/PR/f3dex2/fifo/L3DEX2.bin" glabel gspL3DEX2_fifoTextEnd #endif @@ -145,7 +145,7 @@ glabel gspL3DEX2_fifoTextEnd #ifdef L3DZEX_GBI .balign 16 glabel gspL3DZEX2_PosLight_fifoTextStart - .incbin "lib/PR/f3dzex/L3DZEX.bin" + .incbin "lib/PR/f3dzex/fifo/L3DZEX.bin" glabel gspL3DZEX2_PosLight_fifoTextEnd #endif @@ -153,7 +153,7 @@ glabel gspL3DZEX2_PosLight_fifoTextEnd #ifdef S2DEX_GBI_2 .balign 16 glabel gspS2DEX2_fifoTextStart - .incbin "lib/PR/s2dex2/S2DEX2.bin" + .incbin "lib/PR/s2dex2/fifo/S2DEX2.bin" glabel gspS2DEX2_fifoTextEnd #endif @@ -165,7 +165,7 @@ glabel gspS2DEX2_fifoTextEnd #ifndef F3DEX_GBI_SHARED /* Use regular Fast3D data (default) */ #if SUPER3D_GBI == 1 glabel gspSuper3D_fifoDataStart - .incbin "lib/PR/super3d/Super3D_data.bin" + .incbin "lib/PR/super3d/fifo/Super3D_data.bin" glabel gspSuper3D_fifoDataEnd #endif @@ -173,20 +173,20 @@ glabel gspSuper3D_fifoDataEnd #ifndef F3DZEX_GBI_2 #if F3DEX2PL_GBI == 1 glabel gspF3DEX2_PosLight_fifoDataStart - .incbin "lib/PR/f3dex2pl/F3DEX2_PosLight_data.bin" + .incbin "lib/PR/f3dex2pl/fifo/F3DEX2_PosLight_data.bin" glabel gspF3DEX2_PosLight_fifoDataEnd #elif F3DEX_GBI_2 == 1 glabel gspF3DEX2_fifoDataStart - .incbin "lib/PR/f3dex2/F3DEX2_data.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2_data.bin" glabel gspF3DEX2_fifoDataEnd #elif F3DEX_GBI == 1 glabel gspF3DEX_fifoDataStart - .incbin "lib/PR/f3dex/F3DEX_data.bin" + .incbin "lib/PR/f3dex/fifo/F3DEX_data.bin" glabel gspF3DEX_fifoDataEnd #endif #else /* Fast3DZEX */ glabel gspF3DZEX2_PosLight_fifoDataStart - .incbin "lib/PR/f3dzex/F3DZEX_data.bin" + .incbin "lib/PR/f3dzex/fifo/F3DZEX_data.bin" glabel gspF3DZEX2_PosLight_fifoDataEnd #endif #endif @@ -210,7 +210,7 @@ glabel aspMainDataEnd #ifdef F3DEX_NON_GBI .balign 16 glabel gspF3DEX_NoN_fifoDataStart - .incbin "lib/PR/f3dex/F3DEX_NoN_data.bin" + .incbin "lib/PR/f3dex/fifo/F3DEX_NoN_data.bin" glabel gspF3DEX_NoN_fifoDataEnd #endif @@ -218,7 +218,7 @@ glabel gspF3DEX_NoN_fifoDataEnd #ifdef F3DLX_GBI .balign 16 glabel gspF3DLX_fifoDataStart - .incbin "lib/PR/f3dex/F3DLX_data.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX_data.bin" glabel gspF3DLX_fifoDataEnd #endif @@ -226,7 +226,7 @@ glabel gspF3DLX_fifoDataEnd #ifdef F3DLX_NON_GBI .balign 16 glabel gspF3DLX_NoN_fifoDataStart - .incbin "lib/PR/f3dex/F3DLX_NoN_data.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX_NoN_data.bin" glabel gspF3DLX_NoN_fifoDataEnd #endif @@ -234,7 +234,7 @@ glabel gspF3DLX_NoN_fifoDataEnd #ifdef F3DLX_REJ_GBI .balign 16 glabel gspF3DLX_Rej_fifoDataStart - .incbin "lib/PR/f3dex/F3DLX_Rej_data.bin" + .incbin "lib/PR/f3dex/fifo/F3DLX_Rej_data.bin" glabel gspF3DLX_Rej_fifoDataEnd #endif @@ -242,7 +242,7 @@ glabel gspF3DLX_Rej_fifoDataEnd #ifdef L3DEX_GBI .balign 16 glabel gspL3DEX_fifoDataStart - .incbin "lib/PR/f3dex/L3DEX_data.bin" + .incbin "lib/PR/f3dex/fifo/L3DEX_data.bin" glabel gspL3DEX_fifoDataEnd #endif @@ -250,7 +250,7 @@ glabel gspL3DEX_fifoDataEnd #ifdef S2DEX_GBI .balign 16 glabel gspS2DEX_fifoDataStart - .incbin "lib/PR/s2dex/S2DEX_data.bin" + .incbin "lib/PR/s2dex/fifo/S2DEX_data.bin" glabel gspS2DEX_fifoDataEnd #endif @@ -260,7 +260,7 @@ glabel gspS2DEX_fifoDataEnd #ifdef F3DEX2_NON_GBI .balign 16 glabel gspF3DEX2_NoN_fifoDataStart - .incbin "lib/PR/f3dex2/F3DEX2_NoN_data.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2_NoN_data.bin" glabel gspF3DEX2_NoN_fifoDataEnd #endif @@ -268,7 +268,7 @@ glabel gspF3DEX2_NoN_fifoDataEnd #ifdef F3DZEX_NON_GBI_2 .balign 16 glabel gspF3DZEX2_NoN_PosLight_fifoDataStart - .incbin "lib/PR/f3dzex/F3DZEX_NoN_data.bin" + .incbin "lib/PR/f3dzex/fifo/F3DZEX_NoN_data.bin" glabel gspF3DZEX2_NoN_PosLight_fifoDataEnd #endif @@ -276,7 +276,7 @@ glabel gspF3DZEX2_NoN_PosLight_fifoDataEnd #ifdef F3DEX2_REJ_GBI .balign 16 glabel gspF3DEX2_Rej_fifoDataStart - .incbin "lib/PR/f3dex2/F3DEX2_Rej_data.bin" + .incbin "lib/PR/f3dex2/fifo/F3DEX2_Rej_data.bin" glabel gspF3DEX2_Rej_fifoDataEnd #endif @@ -284,7 +284,7 @@ glabel gspF3DEX2_Rej_fifoDataEnd #ifdef L3DEX2_GBI .balign 16 glabel gspL3DEX2_fifoDataStart - .incbin "lib/PR/f3dex2/L3DEX2_data.bin" + .incbin "lib/PR/f3dex2/fifo/L3DEX2_data.bin" glabel gspL3DEX2_fifoDataEnd #endif @@ -292,7 +292,7 @@ glabel gspL3DEX2_fifoDataEnd #ifdef L3DZEX_GBI .balign 16 glabel gspL3DZEX2_PosLight_fifoDataStart - .incbin "lib/PR/f3dzex/L3DZEX_data.bin" + .incbin "lib/PR/f3dzex/fifo/L3DZEX_data.bin" glabel gspL3DZEX2_PosLight_fifoDataEnd #endif @@ -300,6 +300,6 @@ glabel gspL3DZEX2_PosLight_fifoDataEnd #ifdef S2DEX_GBI_2 .balign 16 glabel gspS2DEX2_fifoDataStart - .incbin "lib/PR/s2dex2/S2DEX2_data.bin" + .incbin "lib/PR/s2dex2/fifo/S2DEX2_data.bin" glabel gspS2DEX2_fifoDataEnd #endif From c54952e9fc09aab8fb7d1e0667ef6ed624c09fe6 Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Fri, 17 Sep 2021 18:56:59 -0400 Subject: [PATCH 4/4] add F3DZEX xbus defines --- include/n64/PR/ucode.h | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/include/n64/PR/ucode.h b/include/n64/PR/ucode.h index 5389a017..7ca86216 100644 --- a/include/n64/PR/ucode.h +++ b/include/n64/PR/ucode.h @@ -226,14 +226,26 @@ extern u64 gspF3DZEX2_PosLight_fifoTextStart[], gspF3DZEX2_PosLight_fifoTextEnd[]; extern u64 gspF3DZEX2_PosLight_fifoDataStart[], gspF3DZEX2_PosLight_fifoDataEnd[]; +extern u64 gspF3DZEX2_PosLight_xbusTextStart[], + gspF3DZEX2_PosLight_xbusTextEnd[]; +extern u64 gspF3DZEX2_PosLight_xbusDataStart[], + gspF3DZEX2_PosLight_xbusDataEnd[]; extern u64 gspF3DZEX2_NoN_PosLight_fifoTextStart[], gspF3DZEX2_NoN_PosLight_fifoTextEnd[]; extern u64 gspF3DZEX2_NoN_PosLight_fifoDataStart[], gspF3DZEX2_NoN_PosLight_fifoDataEnd[]; +extern u64 gspF3DZEX2_NoN_PosLight_xbusTextStart[], + gspF3DZEX2_NoN_PosLight_xbusTextEnd[]; +extern u64 gspF3DZEX2_NoN_PosLight_xbusDataStart[], + gspF3DZEX2_NoN_PosLight_xbusDataEnd[]; extern u64 gspL3DZEX2_PosLight_fifoTextStart[], gspL3DZEX2_PosLight_fifoTextEnd[]; extern u64 gspL3DZEX2_PosLight_fifoDataStart[], gspL3DZEX2_PosLight_fifoDataEnd[]; +extern u64 gspL3DZEX2_PosLight_xbusTextStart[], + gspL3DZEX2_PosLight_xbusTextEnd[]; +extern u64 gspL3DZEX2_PosLight_xbusDataStart[], + gspL3DZEX2_PosLight_xbusDataEnd[]; /************************************************************************** *