diff --git a/credits.txt b/credits.txt index 3f7f09e..7a48a69 100644 --- a/credits.txt +++ b/credits.txt @@ -165,13 +165,13 @@ R GAME STATS - - - -- -- -- -- -- -- - COLLECTION RATE $$$$/216 TOTAL TIME $$$$$$$$$$$ +- +- +- +- +- +- diff --git a/fileselect.asm b/fileselect.asm index bbc9d91..43da561 100644 --- a/fileselect.asm +++ b/fileselect.asm @@ -552,7 +552,7 @@ RTS ;-------------------------------------------------------------------------------- AltBufferTable: LDA.b #$02 : STA $210c ; Have Screen 3 use same tile area as screens 1 - +.noScreen3Change REP #$20 LDX.w #$0380 ; 14 rows with 64 bytes (30 tiles * 2 + 4 byte header) ;fill with the blank character @@ -605,6 +605,59 @@ AltBufferTable: SEP #$20 RTL +;-------------------------------------------------------------------------------- +AltBufferTable_credits: + JSL AltBufferTable_noScreen3Change + + REP #$20 + LDA.w #$6168 : STA $1002 ;file 1 top row + LDA.w #$8168 : STA $1042 ;file 1 bottom row + + LDA.w #$A168 : STA $1082 ;gap row top + LDA.w #$C168 : STA $10C2 ;gap row bottom + + LDA.w #$E168 : STA $1102 ;file 2 top row + LDA.w #$0169 : STA $1142 ;file 2 bottom row + + LDA.w #$2169 : STA $1182 ;gap row top + LDA.w #$4169 : STA $11c2 ;gap row bottom + + LDA.w #$6169 : STA $1202 ;file 3 top row + LDA.w #$8169 : STA $1242 ;file 3 bottom row + + LDA.w #$A169 : STA $1282 ;extra gap row top + LDA.w #$C169 : STA $12c2 ;extra gap row bottom + + LDA.w #$E169 : STA $1302 ;extra gap row top + LDA.w #$016A : STA $1342 ;extra gap row bottom + SEP #$20 +RTL +;-------------------------------------------------------------------------------- +macro LayoutPriority(address) +LDX.w #$003C +- : LDA.w
, X : ORA #$2000 : STA.w
, X +DEX : DEX : BNE - +endmacro + +SetItemLayoutPriority: + REP #$30 + %LayoutPriority($1004) + %LayoutPriority($1044) + %LayoutPriority($1084) + %LayoutPriority($10C4) + %LayoutPriority($1104) + %LayoutPriority($1144) + %LayoutPriority($1184) + %LayoutPriority($11c4) + %LayoutPriority($1204) + %LayoutPriority($1244) + %LayoutPriority($1284) + %LayoutPriority($12c4) + %LayoutPriority($1304) + %LayoutPriority($1344) + +RTL + ;-------------------------------------------------------------------------------- Validate_SRAM: RTL @@ -629,9 +682,9 @@ LoadFullItemTiles: LDA.b #$30 : STA $2117 ; write VRAM destination address LDA.b #$31 : STA $4304 ; set bus A source bank - LDA.b #FileSelectNewGraphics : STA $4302 ; set bus A source address to SRAM - LDA.b #FileSelectNewGraphics>>8 : STA $4303 ; set bus A source address to SRAM - + LDA.b #FileSelectNewGraphics : STA $4302 ; set bus A source address to ROM + LDA.b #FileSelectNewGraphics>>8 : STA $4303 ; set bus A source address to ROM + LDA $2100 : PHA : LDA.b #$80 : STA $2100 ; save screen state & turn screen off STZ $4305 : LDA.b #$10 : STA $4306 ; set transfer size to 0x1000 @@ -649,3 +702,51 @@ LoadFullItemTiles: PLX : PLA RTL ;-------------------------------------------------------------------------------- + +LoadPaletteCredits: + PHA : PHX + REP #$20 + LDX.b #$40 + - + LDA.l GFX_HUD_Palette, X + STA.l $7EC500, X + DEX : DEX + BPL - + SEP #$20 + + INC $15 ; ensure CGRAM gets updated + PLX : PLA +RTL +;-------------------------------------------------------------------------------- +DrawPlayerFile_credits: + ; see $6563C for drawing first file name and hearts + REP #$20 ; set 16 bit accumulator + + LDA $7003D9 : ORA.w #!FS_COLOR_BW + %fs_draw8x16(3,3) + LDA $7003DB : ORA.w #!FS_COLOR_BW + %fs_draw8x16(3,5) + LDA $7003DD : ORA.w #!FS_COLOR_BW + %fs_draw8x16(3,7) + LDA $7003DF : ORA.w #!FS_COLOR_BW + %fs_draw8x16(3,9) + + LDA $70036C : AND.w #$00FF : LSR #3 : STA $02 + %fs_LDY_screenpos(0,20) + LDA.w #$028F|!FS_COLOR_RED + LDX.w #$000A + + .nextHeart + + STA.w $0000, Y + + INY #2 : DEX : BNE + + PHA + TYA : !ADD.w #$40-$14 : TAY + PLA + + + DEC $02 : BNE .nextHeart + + JSL DrawPlayerFile +RTL +;-------------------------------------------------------------------------------- diff --git a/stats/credits.asm b/stats/credits.asm index c23c5a3..9a97303 100755 --- a/stats/credits.asm +++ b/stats/credits.asm @@ -565,8 +565,8 @@ CreditsLineTable: dw CreditsLine171, CreditsLine152, CreditsLine171, CreditsLine171, CreditsLine153, CreditsLine154, CreditsLine171, CreditsLine155 dw CreditsLine156, CreditsLine171, CreditsLine157, CreditsLine158, CreditsLine171, CreditsLine159, CreditsLine160, CreditsLine171 dw CreditsLine161, CreditsLine162, CreditsLine171, CreditsLine163, CreditsLine164, CreditsLine171, CreditsLine165, CreditsLine166 - dw CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001 - dw CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine167, CreditsLine168, CreditsLine171, CreditsLine169, CreditsLine170 + dw CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine167, CreditsLine168, CreditsLine171 + dw CreditsLine169, CreditsLine170, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001, CreditsLine001 !FIRST_SWORD_X = 19 !FIRST_SWORD_Y = 319 @@ -601,6 +601,6 @@ CreditsLineTable: !TOTAL_LAG_TIME_X = 19 !TOTAL_LAG_TIME_Y = 374 !COLLECTION_RATE_X = 22 -!COLLECTION_RATE_Y = 387 +!COLLECTION_RATE_Y = 381 !TOTAL_TIME_X = 19 -!TOTAL_TIME_Y = 390 +!TOTAL_TIME_Y = 384 diff --git a/stats/main.asm b/stats/main.asm index a1d3916..8359a6a 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -555,6 +555,42 @@ LoadModifiedFont: DEX : BPL .nextWord SEP #$30 + JSL LoadFullItemTilesCredits + + RTL + +LoadFullItemTilesCredits: + ; Based on CopyFontToVram(Bank00) + ; copies font graphics to VRAM (for BG3) + + ; increment on writes to $2119 + LDA.b #$80 : STA $2115 + + ; set bank of the source address (see below) + LDA.b #FileSelectNewGraphics>>16 : STA $02 + + REP #$30 + + ; vram target address is $8000 (word) (Wraps to start of VRAM on normal SNES, but using the correct address so it works on extended VRAM machines) + LDA.w #$8000 : STA $2116 + + ; $00[3] = $0E8000 (offset for the font data) + LDA.w #FileSelectNewGraphics : STA $00 + + ; going to write 0x1000 bytes (0x800 words) + LDX.w #$800-1 + + .nextWord + + ; read a word from the font data + LDA [$00] : STA $2118 + + ; increment source address by 2 + INC $00 : INC $00 + + DEX : BPL .nextWord + + SEP #$30 RTL @@ -566,14 +602,44 @@ CheckFontTable: LDA.w FontTable,Y PLB RTL - + +NearEnding: + STZ.w $012A ; disable triforce helper thread + JSL LoadPaletteCredits + REP #$10 + JSL AltBufferTable_credits + JSR DrawEndingItems +JML.l $00ec03 ; PaletteFilter_InitTheEndSprite + +EndingItems: + ; This function is not strictly needed, simply updating the tracker + ; every frame, but it is useful for debuging, so should be left in. + REP #$10 + JSR DrawEndingItems + REP #$20 + LDX.b #$0e +RTL + +DrawEndingItems: + JSL DrawPlayerFile_credits + JSL SetItemLayoutPriority + SEP #$30 + LDA.b #$01 : STA $14 +RTS + FontTable: incbin stats/fonttable.bin CreditsStats: incsrc stats/statConfig.asm dw $FFFF - + +org $0eedd9 + JSL EndingItems + +org $0eedaf + JSL NearEnding + org $0EE651 JSL LoadModifiedFont @@ -596,4 +662,4 @@ org $0ee86d JMP.w AfterDeathCounterOutput org $0ee8fd - AfterDeathCounterOutput: \ No newline at end of file + AfterDeathCounterOutput: