Sprites for entrances and update supertile shapes

This commit is contained in:
2026-01-03 09:20:51 -06:00
parent 688300d21a
commit fecf9547a5
14 changed files with 284 additions and 96 deletions

View File

@@ -0,0 +1,26 @@
dw $200C
dw $100E
dw $2012
dw $1023
dw $1024
dw $2028
dw $204A
dw $4056
dw $4057
dw $4058
dw $4059
dw $1060
dw $2061
dw $4062
dw $4063
dw $2077
dw $4083
dw $2084
dw $1085
dw $4098
dw $20C9
dw $40D5
dw $10D6
dw $20DB
dw $40E0
dw $FFFF

View File

@@ -5,47 +5,47 @@ db $FF, $FF, $4F, $FF ; 03 - Houlihan
db $65, $74, $2D, $2E ; 04
db $FF, $FF, $FF, $FF ; 05 - unused
db $FF, $FF, $4F, $FF ; 06 - Arrghus
db $00, $40, $00, $00 ; 07 - Moldorm
db $FF, $FF, $72, $5F ; 08 - useless fairy entrance
db $00, $30, $00, $00 ; 07 - Moldorm
db $FF, $FF, $72, $72 ; 08 - useless fairy entrance
db $66, $3B, $FF, $FF ; 09
db $58, $1F, $FF, $FF ; 0A
db $2E, $67, $2E, $1E ; 0B
db $31, $31, $24, $24 ; 0C
db $31, $31, $14, $14 ; 0C
db $FF, $FF, $4F, $FF ; 0D - Aga 2
db $FF, $FF, $57, $5F ; 0E
db $FF, $FF, $57, $72 ; 0E
db $FF, $FF, $FF, $FF ; 0F - unused and should never be used, treated as non-id
db $00, $00, $20, $00 ; 10
db $00, $30, $00, $10
db $14, $14, $24, $24
db $00, $00, $10, $00 ; 10
db $00, $30, $00, $10 ; 11
db $14, $14, $14, $14 ; 12
db $FF, $77, $FF, $77 ; 13
db $11, $01, $11, $11
db $34, $00, $01, $00
db $11, $01, $11, $11 ; 14
db $34, $00, $01, $00 ; 15
db $75, $65, $2E, $2E ; 16
db $40, $40, $00, $00
db $30, $30, $00, $00 ; 17
db $75, $FF, $74, $FF ; 18 - useless fairy drop
db $FF, $29, $FF, $1A ; 19
db $FF, $29, $FF, $2A ; 19
db $6E, $6F, $6D, $75 ; 1A
db $2E, $67, $75, $FF ; 1B
db $74, $74, $3E, $2E ; 1C
db $72, $67, $FF, $FF
db $FF, $68, $57, $4B
db $72, $67, $FF, $FF ; 1D
db $FF, $68, $57, $4B ; 1E
db $FF, $FF, $71, $57 ; 1F
db $FF, $FF, $4F, $FF ; 20
db $00, $10, $00, $01
db $00, $10, $00, $01 ; 21
db $FF, $FF, $28, $08 ; 22
db $FF, $FF, $FF, $6B
db $10, $10, $01, $20 ; 24
db $FF, $FF, $FF, $5B ; 23
db $10, $10, $01, $10 ; 24
db $FF, $FF, $FF, $FF ; 25 - unused
db $00, $3C, $14, $42 ; 26
db $40, $40, $00, $00
db $65, $FF, $1B, $0B ; 28
db $30, $30, $00, $00 ; 27
db $65, $FF, $2D, $08 ; 28
db $FF, $FF, $FF, $56 ; 29 - Mothula
db $10, $12, $10, $5E
db $2A, $FF, $0D, $70 ; 2B
db $00, $00, $10, $10 ; 2C - hookshot cave back
db $FF, $FF, $FF, $FF ; 2D - unused
db $FF, $4F, $FF, $FF ; 2E
db $74, $FF, $2E, $5F ; 2F - Kakariko well
db $74, $FF, $2E, $72 ; 2F - Kakariko well
db $75, $FF, $65, $FF ; 30
db $2E, $57, $2E, $57 ; 31
db $14, $14, $44, $44
@@ -58,7 +58,7 @@ db $6C, $FF, $77, $FF ; 38
db $FF, $FF, $72, $69 ; 39
db $64, $64, $14, $14
db $65, $FF, $75, $FF
db $00, $10, $00, $20 ; 3C - hookshot cave front
db $00, $10, $00, $10 ; 3C - hookshot cave front
db $2E, $2E, $75, $65 ; 3D
db $FF, $74, $72, $2E ; 3E
db $FF, $FF, $57, $57
@@ -72,7 +72,7 @@ db $14, $14, $00, $00
db $FF, $FF, $FF, $FF ; 47 - unused
db $FF, $FF, $FF, $FF ; 48 - unused
db $72, $2E, $72, $2E ; 49
db $61, $61, $24, $24 ; 4A
db $61, $61, $14, $14 ; 4A
db $75, $0E, $2E, $2E ; 4B
db $FF, $65, $FF, $77 ; 4C
db $10, $30, $01, $00
@@ -83,24 +83,24 @@ db $14, $14, $44, $44
db $77, $FF, $19, $08 ; 52
db $65, $75, $2E, $2E ; 53
db $50, $50, $40, $00 ; 54
db $00, $00, $20, $00 ; 55
db $74, $74, $2B, $3D ; 56
db $2E, $70, $63, $5B
db $00, $00, $21, $10 ; 58 - split
db $10, $00, $20, $00
db $00, $00, $10, $00 ; 55
db $74, $74, $2D, $3D ; 56
db $2E, $70, $4A, $5B ; 57
db $00, $00, $11, $10 ; 58 - split
db $10, $00, $10, $00
db $FF, $FF, $FF, $4F ; 5A - Helmasaur King
db $FF, $77, $FF, $75 ; 5B
db $71, $6A, $FF, $74 ; 5C
db $2E, $67, $75, $FF ; 5D
db $FF, $68, $57, $4B ; 5E
db $FF, $FF, $7B, $FF
db $FF, $39, $FF, $3A ; 60
db $47, $45, $26, $26
db $06, $14, $22, $00
db $65, $FF, $76, $FF ; 63
db $FF, $FF, $57, $71
db $FF, $FF, $7B, $FF ; 5F
db $FF, $39, $FF, $2A ; 60
db $47, $45, $16, $16 ; 61
db $06, $14, $12, $00 ; 62
db $65, $FF, $75, $FF ; 63
db $FF, $FF, $57, $71 ; 64
db $FF, $FF, $71, $69 ; 65
db $00, $30, $10, $00
db $00, $30, $10, $00 ; 66
db $00, $10, $00, $01 ; 67
db $00, $10, $01, $00 ; 68
db $FF, $FF, $FF, $FF ; 69 - unused
@@ -129,9 +129,9 @@ db $77, $FF, $55, $FF
db $67, $70, $FF, $FF ; 80
db $10, $01, $00, $01
db $5D, $14, $01, $00 ; 82
db $74, $75, $2B, $2E ; 83
db $04, $05, $24, $24
db $4B, $72, $2E, $5F ; 85
db $74, $75, $2D, $2E ; 83
db $04, $05, $14, $14
db $4B, $72, $2E, $72 ; 85
db $FF, $FF, $FF, $FF ; 86 - unused
db $67, $2E, $54, $74
db $FF, $FF, $FF, $FF ; 88 - unused
@@ -148,28 +148,28 @@ db $00, $00, $01, $01 ; 92 - should it be split? idk
db $2C, $2C, $77, $74 ; 93
db $FF, $FF, $FF, $FF ; 94 - unused
db $FF, $77, $FF, $75 ; 95
db $77, $FF, $2E, $57
db $77, $FF, $2E, $57 ; 96
db $65, $74, $2E, $2F ; 97
db $FF, $FF, $5F, $57 ; 98
db $FF, $FF, $72, $57 ; 98
db $FF, $74, $0A, $18 ; 99
db $FF, $FF, $FF, $FF ; 9A - unused
db $72, $1E, $1E, $38 ; 9B
db $10, $10, $01, $01
db $10, $10, $01, $01 ; 9C
db $1E, $72, $71, $1E ; 9D
db $FF, $65, $70, $79 ; 9E
db $FF, $FF, $5B, $FF ; 9F
db $72, $57, $FF, $FF ; A0
db $70, $1D, $FF, $2A ; A1
db $45, $45, $16, $06
db $45, $45, $16, $06 ; A2
db $1A, $FF, $2A, $FF ; A3
db $FF, $FF, $4E, $FF ; A4
db $65, $75, $2E, $2E ; A5
db $00, $30, $00, $00 ; A6
db $56, $FF, $FF, $FF ; A7 - ToH fairy basement room
db $00, $03, $00, $12 ; A8
db $17, $17, $16, $16
db $03, $00, $12, $00
db $FF, $FF, $5A, $FF
db $17, $17, $16, $16 ; A9
db $03, $00, $12, $00 ; AA
db $FF, $FF, $5A, $FF ; AB
db $FF, $FF, $FF, $4F ; AC - Blind
db $FF, $FF, $FF, $FF ; AD - unused
db $FF, $59, $FF, $FF ; AE
@@ -177,29 +177,29 @@ db $5B, $FF, $FF, $FF ; AF
db $2E, $67, $2E, $57 ; B0
db $0E, $75, $0C, $2D ; B1
db $1C, $62, $72, $4B ; B2 - split this monster somehow?
db $4A, $FF, $4A, $FF
db $10, $00, $44, $44
db $30, $00, $10, $00
db $65, $74, $75, $75
db $74, $FF, $75, $FF
db $4A, $FF, $4A, $FF ; B3
db $10, $00, $44, $44 ; B4
db $30, $00, $10, $00 ; B5
db $65, $74, $75, $75 ; B6
db $74, $FF, $75, $FF ; B7
db $FF, $4A, $FF, $74 ; B8
db $15, $15, $14, $14
db $73, $70, $FF, $FF
db $10, $01, $00, $01 ; BB
db $34, $10, $11, $10
db $15, $15, $14, $14 ; B9
db $73, $70, $FF, $FF ; BA
db $2D, $3D, $2E, $3D ; BB
db $7F, $2D, $73, $2D ; BC - block off entrances?
db $FF, $FF, $FF, $FF ; BD - unused
db $FF, $65, $FF, $4A
db $FF, $65, $FF, $4A ; BE
db $FF, $FF, $4D, $FF ; BF
db $2E, $67, $2E, $57 ; C0
db $2E, $73, $2D, $73
db $11, $13, $01, $13
db $13, $00, $03, $00
db $2E, $73, $2D, $73 ; C1
db $11, $13, $01, $13 ; C2
db $13, $00, $03, $00 ; C3
db $44, $44, $00, $01 ; C4
db $75, $FF, $4A, $FF
db $10, $11, $10, $11
db $11, $00, $01, $00
db $75, $FF, $4A, $FF ; C5
db $10, $11, $10, $11 ; C6
db $11, $00, $01, $00 ; C7
db $FF, $FF, $FF, $4F ; C8 - Armos Knights
db $14, $14, $24, $24 ; C9
db $14, $14, $14, $14 ; C9
db $FF, $FF, $FF, $FF ; CA - unused
db $00, $03, $14, $07 ; CB
db $13, $10, $07, $14 ; CC
@@ -211,48 +211,48 @@ db $4E, $4F, $1E, $70 ; D1
db $FF, $75, $FF, $55
db $FF, $FF, $FF, $FF ; D3 - unused
db $FF, $FF, $FF, $FF ; D4 - unused
db $75, $FF, $76, $FF
db $75, $75, $74, $76
db $75, $FF, $75, $FF ; D5
db $75, $75, $74, $75 ; D6
db $FF, $FF, $FF, $FF ; D7 - unused
db $FF, $75, $FF, $77 ; D8
db $FF, $FF, $71, $71
db $FF, $FF, $5C, $FF
db $14, $06, $24, $3F
db $FF, $FF, $71, $71 ; D9
db $FF, $FF, $5C, $FF ; DA
db $14, $06, $14, $3F ; DB
db $06, $14, $03, $00 ; DC
db $FF, $FF, $FF, $FF ; DD - unused
db $FF, $56, $FF, $FF ; DE - Kholdstare
db $FF, $FF, $60, $24 ; DF - paradox top
db $2E, $67, $76, $FF ; E0
db $FF, $FF, $60, $14 ; DF - paradox top
db $2E, $67, $75, $FF ; E0
; no more dungeon
db $00, $00, $20, $00 ; E1 - lost woods thieves hideout
db $00, $00, $00, $20 ; E2 - lumberjack cave
db $FF, $74, $5F, $2E ; E3 - magic bat
db $00, $02, $20, $02 ; E4 - old man's house front
db $02, $00, $26, $24 ; E5 - old man's house back
db $00, $00, $10, $00 ; E1 - lost woods thieves hideout
db $00, $00, $00, $10 ; E2 - lumberjack cave
db $FF, $74, $72, $2E ; E3 - magic bat
db $00, $02, $10, $02 ; E4 - old man's house front
db $02, $00, $16, $14 ; E5 - old man's house back
db $00, $01, $10, $00 ; E6 - death mountain descent left
db $01, $00, $00, $20 ; E7 - death mountain descent right
db $30, $30, $40, $20 ; E8 - superbunny top
db $01, $00, $00, $10 ; E7 - death mountain descent right
db $30, $30, $40, $10 ; E8 - superbunny top
db $FF, $FF, $FF, $FF ; E9 - unused
db $65, $FF, $76, $FF ; EA - spectacle top
db $FF, $66, $FF, $76 ; EB - bumper top
db $65, $FF, $75, $FF ; EA - spectacle top
db $FF, $66, $FF, $75 ; EB - bumper top
db $FF, $FF, $FF, $FF ; EC - unused
db $30, $30, $00, $20 ; ED - fairy ascension top
db $00, $50, $00, $20 ; EE - spiral top
db $FF, $00, $60, $24 ; EF - paradox top
db $00, $02, $20, $02 ; F0 - old man rescue left
db $02, $02, $00, $20 ; F1 - old man rescue right
db $FF, $FF, $FF, $5F ; F2 - Sahasrahla's Kakariko house left
db $FF, $FF, $5F, $FF ; F3 - Sahasrahla's Kakariko house right
db $FF, $FF, $FF, $5F ; F4 - quarreling brothers left
db $FF, $FF, $5F, $FF ; F5 - quarreling brothers right
db $30, $30, $00, $10 ; ED - fairy ascension top
db $00, $50, $00, $10 ; EE - spiral top
db $FF, $00, $60, $14 ; EF - paradox top
db $00, $02, $10, $02 ; F0 - old man rescue left
db $02, $02, $00, $10 ; F1 - old man rescue right
db $FF, $FF, $FF, $72 ; F2 - Sahasrahla's Kakariko house left
db $FF, $FF, $72, $FF ; F3 - Sahasrahla's Kakariko house right
db $FF, $FF, $FF, $72 ; F4 - quarreling brothers left
db $FF, $FF, $72, $FF ; F5 - quarreling brothers right
db $FF, $FF, $FF, $FF ; F6 - unused
db $FF, $FF, $FF, $FF ; F7 - unused
db $30, $30, $60, $24 ; F8 - superbunny bottom
db $00, $01, $20, $00 ; F9 - spectacle left
db $34, $00, $20, $00 ; FA - spectacle bottom
db $30, $30, $60, $14 ; F8 - superbunny bottom
db $00, $01, $10, $00 ; F9 - spectacle left
db $34, $00, $10, $00 ; FA - spectacle bottom
db $FF, $65, $08, $18 ; FB - bumper bottom
db $FF, $FF, $FF, $FF ; FC - unused
db $30, $30, $24, $24 ; FD - fairy ascension bottom
db $FF, $FF, $74, $76 ; FE - spiral bottom
db $74, $74, $2E, $2B ; FF - paradox bottom
db $30, $30, $14, $14 ; FD - fairy ascension bottom
db $FF, $FF, $74, $75 ; FE - spiral bottom
db $74, $74, $2E, $2D ; FF - paradox bottom

View File

@@ -21,11 +21,11 @@ DrawLoot:
STZ.b $0E
LDX.w DungeonID
LDA.l $8AF615, X
LDA.l DungeonMapRoomPointers, X
STA.b $0C
SEP #$20
LDA.l $8AF5E9, X
LDA.l DungeonMapFloorCountData, X
AND.b #$0F
CLC : ADC.w $020E
PHA
@@ -55,7 +55,7 @@ DrawSingleFloorLoot:
ASL A
TAX
LDA.l $8AF605, X
LDA.l DungeonMapFloorToDataOffset, X
TAY
STZ.b $06

View File

@@ -111,3 +111,136 @@ DrawDungeonMapRoom:
PLA : STA.b $0A
PLB
RTL
DrawEntrances:
REP #$30
PHX : PHY
LDA.b $06 : PHA
LDX.w DungeonID
LDA.l DungeonMapRoomPointers, X
STA.b $0C
SEP #$20
LDA.l DungeonMapFloorCountData, X
AND.b #$0F
CLC : ADC.w $020E
DEC A
REP #$20
AND.w #$00FF
JSR DrawBothFloorsEntrances
.done
REP #$20
PLA : STA.b $06
PLY : PLX
SEP #$30
RTL
DrawBothFloorsEntrances:
ASL A
TAX
LDA.l DungeonMapFloorToDataOffset, X
TAY
STZ.b $06
.next_room
REP #$20
LDA.b ($0C), Y ; get room id
AND.w #$00FF
CMP.w #$000F ; $0F = empty room
BEQ +
JSR DrawSingleRoomEntrances
+
INY
SEP #$20
INC.b $06
LDA.b $06
CMP.b #$05
BCC .next_room
STZ.b $06
- INC.b $07
LDA.b $07
CMP.b #$0A
BCC .next_room
.done
RTS
macro DrawSingleEntrance(offset)
LDX.b $00
STZ.w OAMBufferAux, X ; high x-bit and size bit
TXA
ASL #2
TAX
LDA.b $06
ASL #4
CLC : ADC.b #$90+<offset>
STA.w OAMBuffer+0, X
LDA.b $07
ASL #4
CMP.b #$50
BCC ?+
CLC : ADC.b #$50
?+ CLC : ADC.b #$87
CLC : ADC.w $0213
SEC : SBC.b $E8
STA.w OAMBuffer+1, X
LDA.b #$33
STA.w OAMBuffer+2, X
LDA.b #$23
STA.w OAMBuffer+3, X
INC.b $00
endmacro
DrawSingleRoomEntrances:
STA.b $0E
SEP #$10
LDX.b #$FE
.next_entry
INX : INX
LDA.l SupertileEntrances, X
BPL +
JMP .done
+
AND.w #$0FFF
CMP.b $0E
BNE .next_entry
SEP #$20
LDA.l SupertileEntrances+1, X
PHA : PHA
BIT.b #$40
BEQ +
%DrawSingleEntrance(0)
+
PLA
BIT.b #$20
BEQ +
%DrawSingleEntrance(4)
+
PLA
BIT.b #$10
BEQ +
%DrawSingleEntrance(8)
+
.done
REP #$30
RTS

View File

@@ -44,6 +44,7 @@ DungeonMapSwitch_Submodule:
LDA.b #$01
STA.w $0200
STA.w $020D
STZ.w $0213
STZ.w $021B
STZ.w $021C
STZ.b $06
@@ -60,7 +61,15 @@ DungeonMapSwitch_Submodule:
SkipMapSprites:
STZ.b $00
LDA.w $0200
CMP.b #$04
BEQ +
JSL DrawEntrances
+
STZ.b $0E
STZ.b $0F
LDA.w $0200
CMP.b #$04
@@ -92,10 +101,12 @@ RestoreCurrentDungeon:
RTL
RestoreDungeonMapFloorIndex:
STZ.w $020F
STZ.w $020F ; first part we wrote over
LDA.w $021B
STA.b $07
STZ.b $06
LDA.b $0A
LDA.b $0A ; the rest of what we wrote over
AND.b #$08
RTL

View File

@@ -41,6 +41,10 @@ org $8AE64F
org $8AE152
JSL LoadLastHUDPalette
org $8AEAE8 ; vanilla checks number of sprites drawn instead of... counting...
LDA.b $0E
CMP.b #$02
;================================================================================
; Swapping Dungeon in Dungeon Map Screen (L/R)
;--------------------------------------------------------------------------------

View File

@@ -2,6 +2,8 @@
SupertileRoomShapes:
incsrc data/supertile_shapes.asm
warnpc $B9F400
padbyte $FF
pad $B9F400
org $B9F400
DungeonMapData:
@@ -99,6 +101,14 @@ dw $00A4 : db $0C ; Trinexx
dw $FFFF
; $B9F6C0
SupertileEntrances:
incsrc data/entrance_tiles.asm
warnpc $B9F700
padbyte $FF
pad $B9F700
; $B9F700
warnpc $B9FF00

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -347,6 +347,7 @@ DynamicDropGFXSlots = $7E07F1 ; Assume future use of this up to $0E bytes, t
; which item gfx is currently occupying each slot
OAMBuffer = $7E0800 ; Main OAM buffer sent to OAM. $200 bytes.
OAMBuffer2 = $7E0A00 ;
OAMBufferAux = $7E0A20 ; high X-bit and size bit sent to OAM, one byte per sprite
;
TransparencyFlag = $7E0ABD ; Flags transparency effects e.g. in Thieves Town Hellway
;

View File

@@ -290,6 +290,9 @@ WorldMap_HandleSpriteBlink = $8AC52E
WorldMapIcon_AdjustCoordinate = $8AC59B
WorldMap_DarkWorldTilemap = $8AD739
DungeonMapBossRooms = $8AE817
DungeonMapFloorCountData = $8AF5E9
DungeonMapFloorToDataOffset = $8AF605
DungeonMapRoomPointers = $8AF615
DamageSubclassValue = $8DB8F1
TextCharMasks = $8EB844
Credits_ScrollScene_target_y = $8EC308