.extern sprintf #ifndef __MWERKS__ .set r0,0; .set r1,1; .set r2,2; .set r3,3; .set r4,4 .set r5,5; .set r6,6; .set r7,7; .set r8,8; .set r9,9 .set r10,10; .set r11,11; .set r12,12; .set r13,13; .set r14,14 .set r15,15; .set r16,16; .set r17,17; .set r18,18; .set r19,19 .set r20,20; .set r21,21; .set r22,22; .set r23,23; .set r24,24 .set r25,25; .set r26,26; .set r27,27; .set r28,28; .set r29,29 .set r30,30; .set r31,31; .set f0,0; .set f2,2; .set f3,3 #endif .text .align 4 .global GetTexFilenameForR5, TexFilenameBuffer, TexFormatString .set sp, 1 GetTexFilenameForR5: # obj number should be put into r5 # returned filename is in r5 # this makes it easy to use with dRes_c::GetResource stwu sp, -0x20(sp) mflr r0 stw r0, 0x24(sp) stw r3, 0x1C(sp) stw r4, 0x18(sp) stw r6, 0x14(sp) stw r7, 0x10(sp) stw r8, 0xC(sp) stw r9, 0x8(sp) lis r3, TexFilenameBuffer@h ori r3, r3, TexFilenameBuffer@l lis r4, TexFormatString@h ori r4, r4, TexFormatString@l crclr 4*cr1+eq bl sprintf lis r5, TexFilenameBuffer@h ori r5, r5, TexFilenameBuffer@l lwz r0, 0x24(sp) lwz r3, 0x1C(sp) lwz r4, 0x18(sp) lwz r6, 0x14(sp) lwz r7, 0x10(sp) lwz r8, 0xC(sp) lwz r9, 0x8(sp) mtlr r0 addi sp, sp, 0x20 blr .global TEX_WoodBox TEX_WoodBox: lwz r5, 4(r30) srwi r5, r5, 24 b GetTexFilenameForR5 .global TEX_Bush TEX_Bush: srwi r5, r27, 28 b GetTexFilenameForR5 # The below was added by Tempus .global TEX_Goomba TEX_Goomba: lwz r5, 4(r3) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Barrel TEX_Barrel: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Blooper TEX_Blooper: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_BigBlock TEX_BigBlock: lwz r5, 4(r28) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Thwomp TEX_Thwomp: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_GiantBuzzy TEX_GiantBuzzy: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Buzzy TEX_Buzzy: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_BuzzyShell TEX_BuzzyShell: lwz r5, 4(r3) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_SpikeTop TEX_SpikeTop: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Spiny TEX_Spiny: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_SpinyShell TEX_SpinyShell: lwz r5, 4(r3) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_SpringBlock TEX_SpringBlock: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Coaster TEX_Coaster: lwz r5, 4(r31) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Koopa TEX_Koopa: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Gabon TEX_Gabon: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_GabonRock TEX_GabonRock: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Podoboo TEX_Podoboo: lwz r5, 4(r31) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Switch TEX_Switch: lwz r5, 4(r29) srwi r5, r5, 16 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_WiggleShroom TEX_WiggleShroom: lwz r5, -0x520(r3) # This sprite is pretty complex # The register with THIS is r29 # before the loading function, # it passes it into r3, and then mr's # it into r30. r3 is then overwritten. # Then, it puts r31 into r5, r30 partly # into r3 and partly into r4. Why? # So, the possibilities for THIS are # r30, r3, and r4, no? In the next function, # r30 is stored over before our getFile, as # are r29/r28. srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Bramball TEX_Bramball: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Monty TEX_Monty: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_ChainChomp TEX_ChainChomp: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Manta TEX_Manta: lwz r5, 4(r28) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Parabeetle TEX_Parabeetle: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Bomb TEX_Bomb: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_ParaBomb TEX_ParaBomb: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_CheepA TEX_CheepA: lwz r5, 4(r27) srwi r5, r5, 20 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_CheepB TEX_CheepB: lwz r5, 4(r28) srwi r5, r5, 20 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_CheepC TEX_CheepC: lwz r5, 4(r28) srwi r5, r5, 20 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_CheepChomp TEX_CheepChomp: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Boo TEX_Boo: lwz r5, 4(r27) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Midway TEX_Midway: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xFF b GetTexFilenameForR5 .global TEX_Goal TEX_Goal: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_StretchMush TEX_StretchMush: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_BlockSlide TEX_BlockSlide: lwz r5, 4(r28) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Spinner TEX_Spinner: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_Platforms TEX_Platforms: lwz r5, 4(r29) srwi r5, r5, 4 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_PokeyA TEX_PokeyA: lwz r5, 4(r30) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .global TEX_PokeyB TEX_PokeyB: lwz r5, 4(r29) srwi r5, r5, 24 andi. r5, r5, 0xF b GetTexFilenameForR5 .data TexFilenameBuffer: .long 0,0,0,0 TexFormatString: .string "g3d/t%02d.brres"