diff --git a/dungeon_map/check_loot.asm b/dungeon_map/check_loot.asm index 6fcb6c5..322afe6 100644 --- a/dungeon_map/check_loot.asm +++ b/dungeon_map/check_loot.asm @@ -128,6 +128,18 @@ CheckChests: RTS CheckBoss: + ; we assume all bosses are in section 1 of split sections + ; mainly to simplify hera cage key and GT torch + ; which use the same flow + ; and bosses are always in their own section anyway + LDA.b $CA + AND.w #$FF00 + XBA + CMP.w #$0002 + BCC + + RTS + ++ LDA.b $CA AND.w #$00FF STA.b $04 diff --git a/dungeon_map/current_room_map.asm b/dungeon_map/current_room_map.asm index 43896b3..783a22c 100644 --- a/dungeon_map/current_room_map.asm +++ b/dungeon_map/current_room_map.asm @@ -628,30 +628,27 @@ GetSpecificRoomVisibility: DrawDropOrWarp: PHX LDA.l CurrentDisplayedRoom - AND.w #$00FF STA.b $00 LDX.w #$0000 .check_next_drop LDA.l FallTable, X - AND.w #$00FF - CMP.w #$00FF + CMP.w #$FFFF BEQ .no_drop CMP.b $00 BEQ .found_drop - INX : INX + INX : INX : INX : INX BRA .check_next_drop .no_drop LDX.w #$0000 .check_next_warp LDA.l WarpTable, X - AND.w #$00FF - CMP.w #$00FF + CMP.w #$FFFF BEQ .done CMP.b $00 BEQ .found_warp - INX : INX + INX : INX : INX : INX BRA .check_next_warp .found_drop @@ -659,8 +656,7 @@ DrawDropOrWarp: STA.l $7F0574 INC A STA.l $7F0576 - LDA.l FallTable+1, X - AND.w #$00FF + LDA.l FallTable+2, X BRA .draw_room .found_warp @@ -668,8 +664,7 @@ DrawDropOrWarp: STA.l $7F0574 INC A STA.l $7F0576 - LDA.l WarpTable+1, X - AND.w #$00FF + LDA.l WarpTable+2, X .draw_room PHY @@ -1161,6 +1156,10 @@ DrawDoorsMapBlinker: DrawDoorsMapBossRoom: LDX.w DungeonID LDA.l DungeonMapBossRooms, X + CMP.w #$000F + BNE + + RTS ++ STA.b $0E LDX.b #!DoorSlotCount*2-2 diff --git a/dungeon_map/data/fall_warps.asm b/dungeon_map/data/fall_warps.asm index 48f5d9e..5fa7f1a 100644 --- a/dungeon_map/data/fall_warps.asm +++ b/dungeon_map/data/fall_warps.asm @@ -1,20 +1,20 @@ FallTable: -db $07, $17 ; Moldorm Arena -db $17, $27 ; Below Moldorm drop to Big Chest -db $1E, $3E ; IP first drop -db $27, $31 ; ToH Big Chest drop -db $31, $77 ; Second Floor ToH -db $39, $29 ; Mothula drop -db $3A, $0A ; Pod front drop -db $3D, $96 ; GT Torches drop -db $4D, $A6 ; Moldorm 2 drop -db $54, $34 ; Left side Swamp -db $5E, $7E ; IP drop to tall icy room -db $7E, $9E ; Freezors drop (to big chest) -db $8C, $1C ; Ice Armos drop -db $97, $D1 ; Mire Cutscene -db $9E, $BE ; IP Big Chest tile (push blocks) -db $CE, $DE ; Kholdstare drop +db $1007, $1017 ; Moldorm Arena +db $1017, $1027 ; Below Moldorm drop to Big Chest +db $101E, $103E ; IP first drop +db $1027, $1031 ; ToH Big Chest drop +db $1031, $1077 ; Second Floor ToH +db $1039, $1029 ; Mothula drop +db $103A, $100A ; Pod front drop +db $103D, $1096 ; GT Torches drop +db $104D, $10A6 ; Moldorm 2 drop +db $1054, $1034 ; Left side Swamp +db $105E, $107E ; IP drop to tall icy room +db $107E, $109E ; Freezors drop (to big chest) +db $208C, $101C ; Ice Armos drop +db $1097, $10D1 ; Mire Cutscene +db $109E, $10BE ; IP Big Chest tile (push blocks) +db $10CE, $10DE ; Kholdstare drop ; db $65, $AC ; TT Attic ; db $77, $A7 ; ToH drop to fairy room (Herapot) ; db $A9, $89 ; EP drop to fairy room @@ -22,17 +22,17 @@ db $CE, $DE ; Kholdstare drop db $FF WarpTable: -db $09, $4B ; PoD Basement (start) -db $0A, $09 ; PoD Stalfos Basement -db $0B, $6A ; PoD Turtle Room to Boss -db $4B, $09 ; PoD Basement (mimics) -db $7B, $9D ; GT post-compass -db $7D, $9B ; GT warp maze -db $9D, $7B ; GT compass room -db $9B, $7D ; GT warp maze -db $B1, $B2 ; South of Fishbone warp -db $D1, $B1 ; Mire Big Key Chest warp +dw $2009, $104B ; PoD Basement (start) +dw $100A, $1009 ; PoD Stalfos Basement +dw $100B, $206A ; PoD Turtle Room to Boss +dw $104B, $2009 ; PoD Basement (mimics) +dw $207B, $209D ; GT post-compass island hardhat +dw $207D, $109B ; GT warp maze +dw $109D, $307B ; GT compass room +dw $109B, $207D ; GT warp maze +dw $10B1, $20B2 ; South of Fishbone warp +dw $10D1, $10B1 ; Mire Big Key Chest warp ; db $89, $A9 ; EP Fairy Room ; db $A7, $17 ; ToH Fairy Room ; db $4F, $BE ; IP Fairy Room -db $FF +dw $FFFF diff --git a/dungeon_map/data/spiral_stairs.asm b/dungeon_map/data/spiral_stairs.asm index 91fa3e7..fef86a8 100644 --- a/dungeon_map/data/spiral_stairs.asm +++ b/dungeon_map/data/spiral_stairs.asm @@ -1,6 +1,6 @@ SpiralPropsIndex: db $00, $04, $07, $00, $01, $00, $00, $0D, $00, $10, $04, $00, $15, $00, $0A, $00 -db $00, $07, $00, $00, $00, $01, $07, $1C, $00, $00, $21, $00, $26, $01, $0A, $00 +db $00, $07, $00, $00, $00, $01, $07, $1C, $00, $00, $21, $00, $26, $07, $0A, $00 db $00, $00, $00, $00, $00, $00, $29, $30, $01, $00, $00, $00, $00, $00, $00, $00 db $00, $35, $00, $00, $3A, $00, $00, $00, $01, $00, $04, $00, $00, $00, $00, $3D db $40, $07, $07, $00, $00, $01, $00, $00, $00, $00, $43, $00, $07, $07, $07, $00 diff --git a/dungeon_map/data/split_room.asm b/dungeon_map/data/split_room.asm index 83183c6..f9ec94b 100644 --- a/dungeon_map/data/split_room.asm +++ b/dungeon_map/data/split_room.asm @@ -22,6 +22,12 @@ SplitRooms: %d(.no) : %d(.09) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.14) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.1a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) + +%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.2a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) + +%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.35) : %d(.no) : %d(.37) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) @@ -31,25 +37,19 @@ SplitRooms: %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) - -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) - -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.6a) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.75) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.7d) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.no) : %d(.7b) : %d(.7c) : %d(.7d) : %d(.no) : %d(.no) ; 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.82) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.87) +%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.8c) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.9d) : %d(.no) : %d(.no) -%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) +%d(.no) : %d(.no) : %d(.a2) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.a9) : %d(.aa) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) %d(.no) : %d(.no) : %d(.b2) : %d(.no) : %d(.no) : %d(.no) : %d(.b6) : %d(.no) @@ -101,12 +101,111 @@ db $FF db $03, $06, $09 db $FF ..areas2 +db $03, $00, $30, $B8, $D8 +db $03, $D0, $FF, $B8, $D8 db $FF ..doors2 db $05, $0B db $FF -.75 +.1a ; PoD Big Chest (2) // Falling bridge and such (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(..chests) : %d(.no_items) : %d(.no_items) +..areas +db $03, $00, $2C, $70, $98 +db $FF +..doors +db $04 +db $FF +..chests +db $00 +db $FF + +.2a ; PoD Arena Right-Side Chest (2) // Arena (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(..chests) : %d(.no_items) : %d(.no_items) +..areas +db $03, $D8, $FF, $A8, $C8 +db $FF +..doors +db $0B +db $FF +..chests +db $00 +db $FF + +.35 ; Swamp BK Chest (2) // Swamp second trench (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(..chests) : %d(..pots) : %d(.no_items) +..areas +db $03, $00, $70, $00, $80 +db $FF +..doors +db $03 +db $FF +..chests +db $00 +db $FF +..pots +db $01, $02, $03, $04, $05 +db $FF + +.37 ; Swamp Second Chest (2) // Swamp first trench (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(..chests) : %d(.no_items) : %d(..enemies) +..areas +db $03, $90, $FF, $00, $80 +db $FF +..doors +db $09 +db $FF +..chests +db $00 +db $FF +..enemies +db $02, $03 +db $FF + +.6a ; pre-helmasaur-king (2) // PoD rupee basement (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(..enemies) +..areas +db $03, $B4, $C4, $00, $B4 +db $03, $A8, $D0, $B0, $D0 +db $FF +..doors +db $02 +db $FF +..enemies +db $00, $01, $04, $05 +db $FF + +.74 ; desert north -- trapped area (2) // everything else (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(..enemies) +..areas +db $03, $4C, $C4, $CC, $FF +db $FF +..doors +db $07 +db $FF +..enemies +db $06, $07 +db $FF + +.75 ; desert cannonball (2) // desert northeast + trap room (1) db $01 %sq($00) %d(..areas) : %d(..doors) : %d(.no_items) : %d(..chests) : %d(.no_items) : %d(..enemies) @@ -123,6 +222,56 @@ db $FF db $06, $07 db $FF +.7b ; GT post-compass (3) // island hardhat (2) // DMs room (1) +db $02 +%sq($00) +%d(..areas3) : %d(..doors3) : %d(.no_items) +%d(.no_items) : %d(..pots3) : %d(..enemies3) +%sq($00) +%d(..areas2) : %d(..doors2) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(..enemies2) + +..areas3 +db $03, $00, $FF, $00, $80 +db $FF +..doors3 +db $09 +db $FF +..pots3 +db $00, $01, $02, $03, $04 +db $FF +..enemies3 +db $00, $01 +db $FF + +..areas2 +db $03, $80, $FF, $80, $FF +db $FF +..doors2 +db $0B +db $FF +..enemies2 +db $06, $07 +db $FF + +.7c ; GT falling bridge // rando room +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(..pots) : %d(..enemies) +..areas +db $03, $00, $80, $00, $FF +db $FF +..doors +db $03, $05 +db $FF +..pots +db $00, $01, $02, $03 +db $FF +..enemies +db $01, $02, $03, $04 +db $FF + .7d ; GT warp maze (section next to rando room) db $01 %sq($00) @@ -142,6 +291,88 @@ db $FF db $00, $01, $02, $03, $09 db $FF +.82 ; HC Basement (1) + catwalk (2) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(.no_items) +..areas +db $03, $00, $20, $00, $50 +db $FF +..doors +db $00, $03 +db $FF + +.87 ; Hera basement: cage (0) // torches (1) +db $01 +%sq($08) +%d(..areas) : %d(.no_items) : %d(..stairs) +%d(..chests) : %d(..pots) : %d(..enemies) +..areas +db $03, $00, $FF, $00, $80 +db $03, $80, $FF, $80, $FF +db $FF +..stairs +db $00 +db $FF +..chests +db $00 +db $FF +..pots +db $00, $01, $02, $03, $04, $05, $06, $07 +db $FF +..enemies +db $00, $01, $02, $05, $06, $09, $0C +db $FF + +.8c +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(..chests) : %d(..pots) : %d(..enemies) +..areas +db $03, $80, $FF, $80, $FF +db $FF +..doors +db $08 +db $FF +..chests +db $03 +db $FF +..pots +db $02, $03, $04, $05, $06 +db $FF +..enemies +db $06, $07, $09 +db $FF + +.9d +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(..enemies) +..areas +db $03, $00, $FF, $80, $FF +db $FF +..doors +db $05 +db $FF +..enemies +db $06, $07, $08 +db $FF + +.a2 ; Mire abyss -- EW bridge (2), stairs to basement + hookable chest (1) +db $01 +%sq($00) +%d(..areas) : %d(..doors) : %d(.no_items) +%d(.no_items) : %d(.no_items) : %d(.no_items) +..areas +db $01, $00, $FF, $70, $84 +db $FF +..doors +db $04, $0A +db $FF + .a9 db $01 %sq($00)