RedrawLoot: JSL DrawLoot ; what we wrote over SEP #$20 STZ.w $0210 RTL FirstDrawLoot: LDA.b #$FF STA.w $0215 LDA.b #$80 STA.w $0216 STA.w $0218 LDA.l DRMode BEQ + LDA.w DungeonID ASL A TAX LDA.l DungeonMapData.floor, X STA.b $A4 + ; what we wrote over LDA.b #$08 STA.b $17 DrawLoot: LDA.b $07 STA.w $021B LDA.l DRMode BEQ + LDA.l DungeonMapMode BNE + BRA .skip + REP #$30 PHX : PHY STZ.b $0E LDX.w DungeonID JSL LoadDungeonMapRoomPointer STA.b $72 SEP #$20 LDA.l DungeonMapFloorCountData, X AND.b #$0F CLC : ADC.w DungeonMapCurrentFloor PHA JSR DrawSingleFloorLoot INC.b $0F LDA.b #$80 STA.b $0E PLA : DEC A JSR DrawSingleFloorLoot LDX.w GFXStripes LDA.b #$FF STA.w GFXStripes+$02, X LDA.b #$01 STA.b NMISTRIPES PLY : PLX .skip LDA.b #$00 RTL DrawSingleFloorLoot: REP #$20 AND.w #$00FF INC A ASL A %ADD_MapMode() LDA.l MapDrawingData_floor_data_offset, X DEC A TAY %LDX_MapMode() SEP #$20 LDA.l MapDrawingData_column_count, X DEC A STA.b $06 LDA.l MapDrawingData_row_count, X DEC A STA.b $07 .next_row REP #$20 LDA.w GFXStripes TAX CLC : ADC.w #$0034 STA.w GFXStripes PHX %LDX_MapMode() SEP #$20 LDA.b $07 CPX.w #$0002 BNE + ASL A + CLC : ADC.b $07 REP #$20 AND.w #$00FF ASL #5 CLC : ADC.l MapDrawingData_bg1_grid_start, X ADC.b $0E XBA PLX STA.w GFXStripes+$02, X CLC : ADC.w #$2000 STA.w GFXStripes+$1C, X LDA.w #$1500 STA.w GFXStripes+$04, X STA.w GFXStripes+$1E, X TXA CLC : ADC.w #$0018 TAX .next_room REP #$20 LDA.b [$72], Y ; get room id PHY AND.w #$00FF CMP.w #$000F ; $0F = empty room BNE .valid_room LDA.w #$0000 BRA + .valid_room JSL CheckLoot + ASL A : ASL A : ASL A TXY TAX LDA.l LootTypeIcons+0, X STA.w GFXStripes+$00, Y LDA.l LootTypeIcons+2, X STA.w GFXStripes+$02, Y LDA.l LootTypeIcons+4, X STA.w GFXStripes+$1A, Y LDA.l LootTypeIcons+6, X STA.w GFXStripes+$1C, Y TYX PLY DEY : DEX #4 LDA.l DungeonMapMode BEQ + LDA.b $06 AND.w #$00FF BEQ + ; skip a column if in 4x3 mode and it's not the last column LDA.w #$0300 STA.w GFXStripes+$02, X STA.w GFXStripes+$1C, X DEX : DEX + SEP #$20 DEC.b $06 BPL .next_room LDA.l DungeonMapMode BNE + ; draw an extra empty tile at the end to make up for width differences between modes LDA.b #$03 STZ.w GFXStripes+$02, X STA.w GFXStripes+$03, X STZ.w GFXStripes+$1C, X STA.w GFXStripes+$1D, X + DEC.b $07 BMI .done LDA.b #$00 XBA %LDX_MapMode() LDA.l MapDrawingData_column_count, X DEC A STA.b $06 JMP .next_row .done RTS