diff options
-rwxr-xr-x | data/dungeon_tilesets.asm | 2 | ||||
-rwxr-xr-x | data/hide_show_data.asm | 194 | ||||
-rwxr-xr-x | data/tileset_headers.asm | 54 | ||||
-rw-r--r-- | engine/bank3d/bank3d_battle.asm | 5 | ||||
-rw-r--r-- | engine/menu/bills_pc.asm | 5 | ||||
-rw-r--r-- | macros.asm | 14 | ||||
-rwxr-xr-x | main.asm | 98 | ||||
-rwxr-xr-x | wram.asm | 6 | ||||
-rwxr-xr-x | yellow/main.asm | 446 |
9 files changed, 658 insertions, 166 deletions
diff --git a/data/dungeon_tilesets.asm b/data/dungeon_tilesets.asm index 3501f2b9..702a37e0 100755 --- a/data/dungeon_tilesets.asm +++ b/data/dungeon_tilesets.asm @@ -1,2 +1,2 @@ -DungeonTilesets: ; c7b2 (3:47b2) +DungeonTilesets: ; c54c (3:454c) db FOREST, MUSEUM, SHIP, CAVERN, LOBBY, MANSION, GATE, LAB, FACILITY, CEMETERY, GYM, $FF diff --git a/data/hide_show_data.asm b/data/hide_show_data.asm index c8d89102..d465dfb3 100755 --- a/data/hide_show_data.asm +++ b/data/hide_show_data.asm @@ -4,7 +4,7 @@ ; Table of 2-Byte pointers, one pointer per map, ; goes up to Map_F7, ends with $FFFF. ; points to table listing all missable object in the area -MapHSPointers: ; c8f5 (3:48f5) +MapHSPointers: ; c69b (3:469b) dw MapHS00 dw MapHS01 dw MapHS02 @@ -68,7 +68,7 @@ MapHSPointers: ; c8f5 (3:48f5) dw MapHSXX dw MapHS3D dw MapHSXX - dw MapHSXX + dw MapHS3F dw MapHSXX dw MapHSXX dw MapHSXX @@ -253,6 +253,7 @@ MapHSPointers: ; c8f5 (3:48f5) dw MapHSXX dw MapHSXX dw MapHSXX + dw MapHSXX ; beach house dw $FFFF ; Structure: @@ -269,23 +270,24 @@ MapHSPointers: ; c8f5 (3:48f5) Hide equ $11 Show equ $15 -MapHSXX: ; cae7 (3:4ae7) +MapHSXX: ; c88f (3:488f) db $FF,$FF,$FF -MapHS00: ; caea (3:4aea) +MapHS00: ; c892 (3:4892) db PALLET_TOWN,$01,Hide -MapHS01: ; caed (3:4aed) +MapHS01: ; c895 (3:4895) db VIRIDIAN_CITY,$05,Show db VIRIDIAN_CITY,$07,Hide -MapHS02: ; caf3 (3:4af3) + db VIRIDIAN_CITY,$08,Hide +MapHS02: ; c89e (3:489e) db PEWTER_CITY,$03,Show db PEWTER_CITY,$05,Show -MapHS03: ; caf9 (3:4af9) +MapHS03: ; c8a4 (3:48a4) db CERULEAN_CITY,$01,Hide db CERULEAN_CITY,$02,Show db CERULEAN_CITY,$06,Hide db CERULEAN_CITY,$0A,Show db CERULEAN_CITY,$0B,Show -MapHS0A: ; cb08 (3:4b08) +MapHS0A: ; c8b3 (3:48b3) db SAFFRON_CITY,$01,Show db SAFFRON_CITY,$02,Show db SAFFRON_CITY,$03,Show @@ -301,86 +303,86 @@ MapHS0A: ; cb08 (3:4b08) db SAFFRON_CITY,$0D,Hide db SAFFRON_CITY,$0E,Show db SAFFRON_CITY,$0F,Hide -MapHS0D: ; cb35 (3:4b35) +MapHS0D: ; c8e0 (3:48e0) db ROUTE_2,$01,Show db ROUTE_2,$02,Show -MapHS0F: ; cb3b (3:4b3b) +MapHS0F: ; c8e6 (3:48e6) db ROUTE_4,$03,Show -MapHS14: ; cb3e (3:4b3e) +MapHS14: ; c8e9 (3:48e9) db ROUTE_9,$0A,Show -MapHS17: ; cb41 (3:4b41) +MapHS17: ; c8ec (3:48ec) db ROUTE_12,$01,Show db ROUTE_12,$09,Show db ROUTE_12,$0A,Show -MapHS1A: ; cb4a (3:4b4a) +MapHS1A: ; c8f5 (3:48f5) db ROUTE_15,$0B,Show -MapHS1B: ; cb4d (3:4b4d) +MapHS1B: ; c8f8 (3:48f8) db ROUTE_16,$07,Show -MapHS21: ; cb50 (3:4b50) +MapHS21: ; c8fb (3:48fb) db ROUTE_22,$01,Hide db ROUTE_22,$02,Hide -MapHS23: ; cb56 (3:4b56) +MapHS23: ; c901 (3:4901) db ROUTE_24,$01,Show db ROUTE_24,$08,Show -MapHS24: ; cb5c (3:4b5c) +MapHS24: ; c907 (3:4907) db ROUTE_25,$0A,Show -MapHS27: ; cb5f (3:4b5f) +MapHS27: ; c90a (3:490a) db BLUES_HOUSE,$01,Show db BLUES_HOUSE,$02,Hide db BLUES_HOUSE,$03,Show -MapHS28: ; cb68 (3:4b68) +MapHS28: ; c913 (3:4913) db OAKS_LAB,$01,Show db OAKS_LAB,$02,Show - db OAKS_LAB,$03,Show + db OAKS_LAB,$03,Hide db OAKS_LAB,$04,Show - db OAKS_LAB,$05,Hide - db OAKS_LAB,$06,Show - db OAKS_LAB,$07,Show - db OAKS_LAB,$08,Hide -MapHS2D: ; cb80 (3:4b80) + db OAKS_LAB,$05,Show + db OAKS_LAB,$06,Hide +MapHS2D: ; c925 (3:4925) db VIRIDIAN_GYM,$01,Show db VIRIDIAN_GYM,$0B,Show -MapHS34: ; cb86 (3:4b86) +MapHS34: ; c92b (3:492b) db MUSEUM_1F,$05,Show -MapHSE4: ; cb89 (3:4b89) +MapHS3F: ; c92e (3:492e) ; bulbasaur adoption house + db CERULEAN_HOUSE,$02,Show +MapHSE4: ; c931 (3:4931) db UNKNOWN_DUNGEON_1,$01,Show db UNKNOWN_DUNGEON_1,$02,Show db UNKNOWN_DUNGEON_1,$03,Show -MapHS8F: ; cb92 (3:4b92) + db UNKNOWN_DUNGEON_1,$04,Show +MapHS8F: ; c93d (3:493d) db POKEMONTOWER_2,$01,Show -MapHS90: ; cb95 (3:4b95) +MapHS90: ; c940 (3:4940) db POKEMONTOWER_3,$04,Show -MapHS91: ; cb98 (3:4b98) +MapHS91: ; c943 (3:4943) db POKEMONTOWER_4,$04,Show db POKEMONTOWER_4,$05,Show db POKEMONTOWER_4,$06,Show -MapHS92: ; cba1 (3:4ba1) +MapHS92: ; c94c (3:494c) db POKEMONTOWER_5,$06,Show -MapHS93: ; cba4 (3:4ba4) +MapHS93: ; c94f (3:494f) db POKEMONTOWER_6,$04,Show db POKEMONTOWER_6,$05,Show -MapHS94: ; cbaa (3:4baa) - db POKEMONTOWER_7,$01,Show - db POKEMONTOWER_7,$02,Show +MapHS94: ; c955 (3:4955) + db POKEMONTOWER_7,$01,Hide ; jessie & james? + db POKEMONTOWER_7,$02,Hide db POKEMONTOWER_7,$03,Show - db POKEMONTOWER_7,$04,Show -MapHS95: ; cbb6 (3:4bb6) +MapHS95: ; c95e (3:495e) db LAVENDER_HOUSE_1,$05,Hide -MapHS84: ; cbb9 (3:4bb9) +MapHS84: ; c961 (3:4961) db CELADON_MANSION_5,$02,Show -MapHS87: ; cbbc (3:4bbc) +MapHS87: ; c964 (3:4964) db GAME_CORNER,$0B,Show -MapHS9B: ; cbbf (3:4bbf) +MapHS9B: ; c967 (3:4967) db FUCHSIA_HOUSE_2,$02,Show -MapHSA5: ; cbc2 (3:4bc2) +MapHSA5: ; c96a (3:496a) db MANSION_1,$02,Show db MANSION_1,$03,Show -MapHSB1: ; cbc8 (3:4bc8) +MapHSB1: ; c970 (3:4970) db FIGHTING_DOJO,$06,Show db FIGHTING_DOJO,$07,Show -MapHSB5: ; cbce (3:4bce) +MapHSB5: ; c976 (3:4976) db SILPH_CO_1F,$01,Hide -MapHS53: ; cbd1 (3:4bd1) +MapHS53: ; c979 (3:4979) db POWER_PLANT,$01,Show db POWER_PLANT,$02,Show db POWER_PLANT,$03,Show @@ -395,84 +397,88 @@ MapHS53: ; cbd1 (3:4bd1) db POWER_PLANT,$0C,Show db POWER_PLANT,$0D,Show db POWER_PLANT,$0E,Show -MapHSC2: ; cbfb (3:4bfb) +MapHSC2: ; c9a3 (3:49a3) db VICTORY_ROAD_2,$06,Show db VICTORY_ROAD_2,$07,Show db VICTORY_ROAD_2,$08,Show db VICTORY_ROAD_2,$09,Show db VICTORY_ROAD_2,$0A,Show db VICTORY_ROAD_2,$0D,Show -MapHS58: ; cc0d (3:4c0d) +MapHS58: ; c9b5 (3:49b5) db BILLS_HOUSE,$01,Show db BILLS_HOUSE,$02,Hide db BILLS_HOUSE,$03,Hide -MapHS33: ; cc16 (3:4c16) - db VIRIDIAN_FOREST,$05,Show - db VIRIDIAN_FOREST,$06,Show +MapHS33: ; c9be (3:49be) db VIRIDIAN_FOREST,$07,Show -MapHS3B: ; cc1f (3:4c1f) + db VIRIDIAN_FOREST,$08,Show + db VIRIDIAN_FOREST,$09,Show +MapHS3B: ; c9c7 (3:49c7) db MT_MOON_1,$08,Show db MT_MOON_1,$09,Show db MT_MOON_1,$0A,Show db MT_MOON_1,$0B,Show db MT_MOON_1,$0C,Show db MT_MOON_1,$0D,Show -MapHS3D: ; cc31 (3:4c31) - db MT_MOON_3,$06,Show +MapHS3D: ; c9d9 (3:49d9) + db MT_MOON_3,$02,Hide + db MT_MOON_3,$06,Hide db MT_MOON_3,$07,Show db MT_MOON_3,$08,Show db MT_MOON_3,$09,Show -MapHS60: ; cc3d (3:4c3d) + db MT_MOON_3,$0A,Show +MapHS60: ; c9eb (3:49eb) db SS_ANNE_2,$02,Hide -MapHS66: ; cc40 (3:4c40) +MapHS66: ; c9ee (3:49ee) db SS_ANNE_8,$0A,Show -MapHS67: ; cc43 (3:4c43) +MapHS67: ; c9f1 (3:49f1) db SS_ANNE_9,$06,Show db SS_ANNE_9,$09,Show -MapHS68: ; cc49 (3:4c49) +MapHS68: ; c9f7 (3:49f7) db SS_ANNE_10,$09,Show db SS_ANNE_10,$0A,Show db SS_ANNE_10,$0B,Show -MapHSC6: ; cc52 (3:4c52) +MapHSC6: ; ca00 (3:4a00) db VICTORY_ROAD_3,$05,Show db VICTORY_ROAD_3,$06,Show db VICTORY_ROAD_3,$0A,Show -MapHSC7: ; cc5b (3:4c5b) +MapHSC7: ; ca09 (3:4a09) db ROCKET_HIDEOUT_1,$06,Show db ROCKET_HIDEOUT_1,$07,Show -MapHSC8: ; cc61 (3:4c61) +MapHSC8: ; ca0f (3:4a0f) db ROCKET_HIDEOUT_2,$02,Show db ROCKET_HIDEOUT_2,$03,Show db ROCKET_HIDEOUT_2,$04,Show db ROCKET_HIDEOUT_2,$05,Show -MapHSC9: ; cc6d (3:4c6d) +MapHSC9: ; ca1b (3:4a1b) db ROCKET_HIDEOUT_3,$03,Show db ROCKET_HIDEOUT_3,$04,Show -MapHSCA: ; cc73 (3:4c73) +MapHSCA: ; ca21 (3:4a21) db ROCKET_HIDEOUT_4,$01,Show + db ROCKET_HIDEOUT_4,$02,Hide + db ROCKET_HIDEOUT_4,$03,Hide db ROCKET_HIDEOUT_4,$05,Show db ROCKET_HIDEOUT_4,$06,Show db ROCKET_HIDEOUT_4,$07,Show db ROCKET_HIDEOUT_4,$08,Hide db ROCKET_HIDEOUT_4,$09,Hide -MapHSCF: ; cc85 (3:4c85) +MapHSCF: ; ca39 (3:4a39) db SILPH_CO_2F,$01,Show db SILPH_CO_2F,$02,Show db SILPH_CO_2F,$03,Show db SILPH_CO_2F,$04,Show db SILPH_CO_2F,$05,Show -MapHSD0: ; cc94 (3:4c94) +MapHSD0: ; ca48 (3:4a48) db SILPH_CO_3F,$02,Show db SILPH_CO_3F,$03,Show db SILPH_CO_3F,$04,Show -MapHSD1: ; cc9d (3:4c9d) +MapHSD1: ; ca51 (3:4a51) db SILPH_CO_4F,$02,Show db SILPH_CO_4F,$03,Show db SILPH_CO_4F,$04,Show db SILPH_CO_4F,$05,Show db SILPH_CO_4F,$06,Show db SILPH_CO_4F,$07,Show -MapHSD2: ; ccaf (3:4caf) +MapHSD2: ; ca63 (3:4a63) db SILPH_CO_5F,$02,Show db SILPH_CO_5F,$03,Show db SILPH_CO_5F,$04,Show @@ -480,13 +486,13 @@ MapHSD2: ; ccaf (3:4caf) db SILPH_CO_5F,$06,Show db SILPH_CO_5F,$07,Show db SILPH_CO_5F,$08,Show -MapHSD3: ; ccc4 (3:4cc4) +MapHSD3: ; ca78 (3:4a78) db SILPH_CO_6F,$06,Show db SILPH_CO_6F,$07,Show db SILPH_CO_6F,$08,Show db SILPH_CO_6F,$09,Show db SILPH_CO_6F,$0A,Show -MapHSD4: ; ccd3 (3:4cd3) +MapHSD4: ; ca87 (3:4a87) db SILPH_CO_7F,$05,Show db SILPH_CO_7F,$06,Show db SILPH_CO_7F,$07,Show @@ -495,83 +501,93 @@ MapHSD4: ; ccd3 (3:4cd3) db SILPH_CO_7F,$0A,Show db SILPH_CO_7F,$0B,Show db SILPH_CO_7F,$0C,Show -MapHSD5: ; cceb (3:4ceb) +MapHSD5: ; ca9f (3:4a9f) db SILPH_CO_8F,$02,Show db SILPH_CO_8F,$03,Show db SILPH_CO_8F,$04,Show -MapHSE9: ; ccf4 (3:4cf4) +MapHSE9: ; caa8 (3:4aa8) db SILPH_CO_9F,$02,Show db SILPH_CO_9F,$03,Show db SILPH_CO_9F,$04,Show -MapHSEA: ; ccfd (3:4cfd) +MapHSEA: ; cab1 (3:4ab1) db SILPH_CO_10F,$01,Show db SILPH_CO_10F,$02,Show db SILPH_CO_10F,$03,Show db SILPH_CO_10F,$04,Show db SILPH_CO_10F,$05,Show db SILPH_CO_10F,$06,Show -MapHSEB: ; cd0f (3:4d0f) +MapHSEB: ; cac3 (3:4ac3) db SILPH_CO_11F,$03,Show db SILPH_CO_11F,$04,Show db SILPH_CO_11F,$05,Show -MapHSF4: ; cd18 (3:4d18) + db SILPH_CO_11F,$06,Show +MapHSF4: ; cacf (3:4acf) db $F4,$02,Show -MapHSD6: ; cd1b (3:4d1b) +MapHSD6: ; cad2 (3:4ad2) db MANSION_2,$02,Show -MapHSD7: ; cd1e (3:4d1e) +MapHSD7: ; cad5 (3:4ad5) db MANSION_3,$03,Show db MANSION_3,$04,Show -MapHSD8: ; cd24 (3:4d24) +MapHSD8: ; cadb (3:4adb) db MANSION_4,$03,Show db MANSION_4,$04,Show db MANSION_4,$05,Show db MANSION_4,$06,Show db MANSION_4,$08,Show -MapHSD9: ; cd33 (3:4d33) +MapHSD9: ; caea (3:4aea) db SAFARI_ZONE_EAST,$01,Show db SAFARI_ZONE_EAST,$02,Show db SAFARI_ZONE_EAST,$03,Show db SAFARI_ZONE_EAST,$04,Show -MapHSDA: ; cd3f (3:4d3f) +MapHSDA: ; caf6 (3:4af6) db SAFARI_ZONE_NORTH,$01,Show db SAFARI_ZONE_NORTH,$02,Show -MapHSDB: ; cd45 (3:4d45) +MapHSDB: ; cafc (3:4afc) db SAFARI_ZONE_WEST,$01,Show db SAFARI_ZONE_WEST,$02,Show db SAFARI_ZONE_WEST,$03,Show db SAFARI_ZONE_WEST,$04,Show -MapHSDC: ; cd51 (3:4d51) +MapHSDC: ; cb08 (3:4b08) db SAFARI_ZONE_CENTER,$01,Show -MapHSE2: ; cd54 (3:4d54) +MapHSE2: ; cb0b (3:4b0b) db UNKNOWN_DUNGEON_2,$01,Show db UNKNOWN_DUNGEON_2,$02,Show db UNKNOWN_DUNGEON_2,$03,Show -MapHSE3: ; cd5d (3:4d5d) + db UNKNOWN_DUNGEON_2,$04,Show +MapHSE3: ; cb17 (3:4b17) db UNKNOWN_DUNGEON_3,$01,Show db UNKNOWN_DUNGEON_3,$02,Show db UNKNOWN_DUNGEON_3,$03,Show -MapHS6C: ; cd66 (3:4d66) + db UNKNOWN_DUNGEON_3,$04,Show + db UNKNOWN_DUNGEON_3,$05,Show +MapHS6C: ; cb26 (3:4b26) db VICTORY_ROAD_1,$03,Show db VICTORY_ROAD_1,$04,Show -MapHS78: ; cd6c (3:4d6c) +MapHS78: ; cb2c (3:4b2c) db CHAMPIONS_ROOM,$02,Hide -MapHSC0: ; cd6f (3:4d6f) +MapHSC0: ; cb2f (3:4b2f) db SEAFOAM_ISLANDS_1,$01,Show db SEAFOAM_ISLANDS_1,$02,Show -MapHS9F: ; cd75 (3:4d75) +MapHS9F: ; cb35 (3:4b35) db SEAFOAM_ISLANDS_2,$01,Hide db SEAFOAM_ISLANDS_2,$02,Hide -MapHSA0: ; cd7b (3:4d7b) +MapHSA0: ; cb3b (3:4b3b) db SEAFOAM_ISLANDS_3,$01,Hide db SEAFOAM_ISLANDS_3,$02,Hide -MapHSA1: ; cd81 (3:4d81) +MapHSA1: ; cb41 (3:4b41) db SEAFOAM_ISLANDS_4,$02,Show db SEAFOAM_ISLANDS_4,$03,Show db SEAFOAM_ISLANDS_4,$05,Hide db SEAFOAM_ISLANDS_4,$06,Hide -MapHSA2: ; cd8d (3:4d8d) +MapHSA2: ; cb4d (3:4b4d) db SEAFOAM_ISLANDS_5,$01,Hide db SEAFOAM_ISLANDS_5,$02,Hide db SEAFOAM_ISLANDS_5,$03,Show - db $FF,$01,Show +MapHS27Copy: ; cb56 (3:4b56) +; doesn't seem to be referenced + db BLUES_HOUSE,$01,Show + db BLUES_HOUSE,$02,Hide + db BLUES_HOUSE,$03,Show + + db $FF,$01,Show
\ No newline at end of file diff --git a/data/tileset_headers.asm b/data/tileset_headers.asm index 27ccc8f0..c21474f8 100755 --- a/data/tileset_headers.asm +++ b/data/tileset_headers.asm @@ -1,26 +1,28 @@ -Tilesets: ; c7be (3:47be) - tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, OUTDOOR - tileset RedsHouse1_Block, RedsHouse1_GFX, RedsHouse1_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Mart_Block, Mart_GFX, Mart_Coll, $18,$19,$1E, $FF, INDOOR - tileset Forest_Block, Forest_GFX, Forest_Coll, $FF,$FF,$FF, $20, CAVE - tileset RedsHouse2_Block, RedsHouse2_GFX, RedsHouse2_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Dojo_Block, Dojo_GFX, Dojo_Coll, $3A,$FF,$FF, $FF, OUTDOOR - tileset Pokecenter_Block, Pokecenter_GFX, Pokecenter_Coll, $18,$19,$1E, $FF, INDOOR - tileset Gym_Block, Gym_GFX, Gym_Coll, $3A,$FF,$FF, $FF, OUTDOOR - tileset House_Block, House_GFX, House_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset ForestGate_Block, ForestGate_GFX, ForestGate_Coll, $17,$32,$FF, $FF, INDOOR - tileset Museum_Block, Museum_GFX, Museum_Coll, $17,$32,$FF, $FF, INDOOR - tileset Underground_Block, Underground_GFX, Underground_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Gate_Block, Gate_GFX, Gate_Coll, $17,$32,$FF, $FF, INDOOR - tileset Ship_Block, Ship_GFX, Ship_Coll, $FF,$FF,$FF, $FF, CAVE - tileset ShipPort_Block, ShipPort_GFX, ShipPort_Coll, $FF,$FF,$FF, $FF, CAVE - tileset Cemetery_Block, Cemetery_GFX, Cemetery_Coll, $12,$FF,$FF, $FF, INDOOR - tileset Interior_Block, Interior_GFX, Interior_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Cavern_Block, Cavern_GFX, Cavern_Coll, $FF,$FF,$FF, $FF, CAVE - tileset Lobby_Block, Lobby_GFX, Lobby_Coll, $15,$36,$FF, $FF, INDOOR - tileset Mansion_Block, Mansion_GFX, Mansion_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Lab_Block, Lab_GFX, Lab_Coll, $FF,$FF,$FF, $FF, INDOOR - tileset Club_Block, Club_GFX, Club_Coll, $07,$17,$FF, $FF, INDOOR - tileset Facility_Block, Facility_GFX, Facility_Coll, $12,$FF,$FF, $FF, CAVE - tileset Plateau_Block, Plateau_GFX, Plateau_Coll, $FF,$FF,$FF, $45, CAVE - tileset BeachHouse_Block, BeachHouse_GFX, BeachHouse_Coll, $FF,$FF,$FF, $FF, INDOOR +Tilesets: ; c558 (3:4558) + dr $c558,$c684 + + ;tileset Overworld_Block, Overworld_GFX, Overworld_Coll, $FF,$FF,$FF, $52, OUTDOOR + ;tileset RedsHouse1_Block, RedsHouse1_GFX, RedsHouse1_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Mart_Block, Mart_GFX, Mart_Coll, $18,$19,$1E, $FF, INDOOR + ;tileset Forest_Block, Forest_GFX, Forest_Coll, $FF,$FF,$FF, $20, CAVE + ;tileset RedsHouse2_Block, RedsHouse2_GFX, RedsHouse2_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Dojo_Block, Dojo_GFX, Dojo_Coll, $3A,$FF,$FF, $FF, OUTDOOR + ;tileset Pokecenter_Block, Pokecenter_GFX, Pokecenter_Coll, $18,$19,$1E, $FF, INDOOR + ;tileset Gym_Block, Gym_GFX, Gym_Coll, $3A,$FF,$FF, $FF, OUTDOOR + ;tileset House_Block, House_GFX, House_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset ForestGate_Block, ForestGate_GFX, ForestGate_Coll, $17,$32,$FF, $FF, INDOOR + ;tileset Museum_Block, Museum_GFX, Museum_Coll, $17,$32,$FF, $FF, INDOOR + ;tileset Underground_Block, Underground_GFX, Underground_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Gate_Block, Gate_GFX, Gate_Coll, $17,$32,$FF, $FF, INDOOR + ;tileset Ship_Block, Ship_GFX, Ship_Coll, $FF,$FF,$FF, $FF, CAVE + ;tileset ShipPort_Block, ShipPort_GFX, ShipPort_Coll, $FF,$FF,$FF, $FF, CAVE + ;tileset Cemetery_Block, Cemetery_GFX, Cemetery_Coll, $12,$FF,$FF, $FF, INDOOR + ;tileset Interior_Block, Interior_GFX, Interior_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Cavern_Block, Cavern_GFX, Cavern_Coll, $FF,$FF,$FF, $FF, CAVE + ;tileset Lobby_Block, Lobby_GFX, Lobby_Coll, $15,$36,$FF, $FF, INDOOR + ;tileset Mansion_Block, Mansion_GFX, Mansion_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Lab_Block, Lab_GFX, Lab_Coll, $FF,$FF,$FF, $FF, INDOOR + ;tileset Club_Block, Club_GFX, Club_Coll, $07,$17,$FF, $FF, INDOOR + ;tileset Facility_Block, Facility_GFX, Facility_Coll, $12,$FF,$FF, $FF, CAVE + ;tileset Plateau_Block, Plateau_GFX, Plateau_Coll, $FF,$FF,$FF, $45, CAVE + ;tileset BeachHouse_Block, BeachHouse_GFX, BeachHouse_Coll, $FF,$FF,$FF, $FF, INDOOR
\ No newline at end of file diff --git a/engine/bank3d/bank3d_battle.asm b/engine/bank3d/bank3d_battle.asm index 50df865e..51071db2 100644 --- a/engine/bank3d/bank3d_battle.asm +++ b/engine/bank3d/bank3d_battle.asm @@ -51,10 +51,7 @@ asm_f601d: ; f601d (f:601d) ld a,[W_LONEATTACKNO] and a jp z,InitBattle_Common - ld hl,Func_f430a - ld b,BANK(Func_f430a) - ld d,$4 - call Bankswitch ; useless since already in bank3d + callabd_Func_f430a $4 ; useless since already in bank3d jp InitBattle_Common InitWildBattle: ; f607c (3d:607c) diff --git a/engine/menu/bills_pc.asm b/engine/menu/bills_pc.asm index 4ee107cd..b0fa107e 100644 --- a/engine/menu/bills_pc.asm +++ b/engine/menu/bills_pc.asm @@ -247,10 +247,7 @@ BillsPCDeposit: ; 2156d (8:556d) ld a, [wcf91] call PlayCry .asm_215cf - ld hl, Func_f430a - ld b, BANK(Func_f430a) - ld d, $7 - call Bankswitch + callabd_Func_f430a $7 ld a, PARTY_TO_BOX ld [wMoveMonType], a call MoveMon @@ -97,6 +97,20 @@ callab: MACRO call Bankswitch ENDM +calladb_Func_f430a: MACRO + ld hl, Func_f430a + ld d, \1 + ld b, BANK(Func_f430a) + call Bankswitch + ENDM + +callabd_Func_f430a: MACRO + ld hl, Func_f430a + ld b, BANK(Func_f430a) + ld d, \1 + call Bankswitch + ENDM + jpba: MACRO ld b, BANK(\1) ld hl, \1 @@ -2262,8 +2262,7 @@ PrintSafariZoneSteps: ; c52f (3:452f) cp UNKNOWN_DUNGEON_2 ret nc coord hl, 0, 0 - ld b, 3 - ld c, 7 + lb bc, 3, 7 call TextBoxBorder coord hl, 1, 1 ld de, wSafariSteps @@ -2277,26 +2276,26 @@ PrintSafariZoneSteps: ; c52f (3:452f) call PlaceString ld a, [W_NUMSAFARIBALLS] cp 10 - jr nc, .asm_c56d + jr nc, .numSafariBallsTwoDigits coord hl, 5, 3 ld a, " " ld [hl], a -.asm_c56d +.numSafariBallsTwoDigits coord hl, 6, 3 ld de, W_NUMSAFARIBALLS lb bc, 1, 2 jp PrintNumber -SafariSteps: ; c579 (3:4579) +SafariSteps: ; c2c4 (3:42c4) db "/500@" -SafariBallText: ; c57e (3:457e) +SafariBallText: ; c5c9 (3:45c9) db "BALL×× @" -GetTileAndCoordsInFrontOfPlayer: ; c586 (3:4586) +GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d4) call GetPredefRegisters -_GetTileAndCoordsInFrontOfPlayer: ; c589 (3:4589) +_GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d4) ld a, [W_YCOORD] ld d, a ld a, [W_XCOORD] @@ -2333,7 +2332,7 @@ _GetTileAndCoordsInFrontOfPlayer: ; c589 (3:4589) ld [wTileInFrontOfPlayer], a ret -GetTileTwoStepsInFrontOfPlayer: ; c5be (3:45be) +GetTileTwoStepsInFrontOfPlayer: ; c309 (3:4309) xor a ld [$ffdb], a ld hl, W_YCOORD @@ -2381,18 +2380,10 @@ GetTileTwoStepsInFrontOfPlayer: ; c5be (3:45be) ld [wTileInFrontOfPlayer], a ret -CheckForCollisionWhenPushingBoulder: ; c60b (3:460b) +CheckForCollisionWhenPushingBoulder: ; c356 (3:4356) call GetTileTwoStepsInFrontOfPlayer - ld hl, W_TILESETCOLLISIONPTR - ld a, [hli] - ld h, [hl] - ld l, a -.loop - ld a, [hli] - cp $ff - jr z, .done ; if the tile two steps ahead is not passable - cp c - jr nz, .loop + call IsTilePassable + jr c, .done ld hl, TilePairCollisionsLand call CheckForTilePairCollisions2 ld a, $ff @@ -2407,7 +2398,7 @@ CheckForCollisionWhenPushingBoulder: ; c60b (3:460b) ret ; sets a to $ff if there is a collision and $00 if there is no collision -CheckForBoulderCollisionWithSprites: ; c636 (3:4636) +CheckForBoulderCollisionWithSprites: ; c378 (3:4378) ld a, [wBoulderSpriteIndex] dec a swap a @@ -2484,10 +2475,16 @@ CheckForBoulderCollisionWithSprites: ; c636 (3:4636) xor a ret -ApplyOutOfBattlePoisonDamage: ; c69c (3:469c) +ApplyOutOfBattlePoisonDamage: ; c3de (3:43de) ld a, [wd730] add a jp c, .noBlackOut ; no black out if joypad states are being simulated + ld a, [wd493] + bit 7, a + jp nz, .noBlackOut + ld a, [wd72e] + bit 6, a + jp nz, .noBlackout ld a, [wPartyCount] and a jp z, .noBlackOut @@ -2540,6 +2537,12 @@ ApplyOutOfBattlePoisonDamage: ; c69c (3:469c) ld a, $d0 ld [hSpriteIndexOrTextID], a call DisplayTextID + callab Func_fce18 + jr nc, .curMonNotPlayerPikachu + ld e, $3 + callab Func_f0000 + callab_Func_f430a_ld_d $9 +.curMonNotPlayerPikachu pop de pop hl .nextMon @@ -2597,30 +2600,47 @@ ApplyOutOfBattlePoisonDamage: ; c69c (3:469c) ld [wOutOfBattleBlackout], a ret -LoadTilesetHeader: ; c754 (3:4754) +Func_c4c7: ; c4c7 (3:44c7) + ld a, [wStepCounter] + and a + jr nz, .asm_c4de + call Random + and $1 + jr z, .asm_c4de + callab_Func_f430a_ld_d $6 +.asm_c4de + ld hl, wd471 + ld a, [hl] + cp $80 + jr z, .asm_c4ef + jr c, .asm_c4ea + dec a + dec a +.asm_c4ea + inc a + ld [hl], a + cp $80 + ret nz +.asm_c4ef + xor a + ld [wd49c], a + ret + +LoadTilesetHeader: ; c4f4 (3:44f4) call GetPredefRegisters push hl ld d, 0 ld a, [W_CURMAPTILESET] add a add a - ld b, a - add a - add b ; a = tileset * 12 - jr nc, .noCarry - inc d -.noCarry ld e, a ld hl, Tilesets add hl, de + add hl, de + add hl, de ld de, W_TILESETBANK - ld c, $b -.copyTilesetHeaderLoop - ld a, [hli] - ld [de], a - inc de - dec c - jr nz, .copyTilesetHeaderLoop + ld bc, $b + call CopyData ld a, [hl] ld [hTilesetType], a xor a @@ -2634,13 +2654,13 @@ LoadTilesetHeader: ; c754 (3:4754) call IsInArray pop de pop hl - jr c, .asm_c797 + jr c, .notDungeonTileset ld a, [W_CURMAPTILESET] ld b, a ld a, [hPreviousTileset] cp b jr z, .done -.asm_c797 +.notDungeonTileset ld a, [wDestinationWarpID] cp $ff jr z, .done @@ -2658,7 +2678,7 @@ INCLUDE "data/dungeon_tilesets.asm" INCLUDE "data/tileset_headers.asm" -IncrementDayCareMonExp: ; c8de (3:48de) +IncrementDayCareMonExp: ; c684 (3:4684) ld a, [W_DAYCARE_IN_USE] and a ret z @@ -2532,7 +2532,11 @@ wd473:: ds 1 wd47a:: ds 1 - ds 30 + ds 24 + +wd493:: ds 1 + + ds 5 wUnknownSerialFlag_d499:: ds 1 ; d498 wUnknownSerialFlag_d49a:: ds 1 ; d499 diff --git a/yellow/main.asm b/yellow/main.asm index ed853b80..a7dc5827 100755 --- a/yellow/main.asm +++ b/yellow/main.asm @@ -344,10 +344,452 @@ IsPlayerStandingOnDoorTileOrWarpTile: ; c1e6 (3:41e6) ret INCLUDE "data/warp_tile_ids.asm" + PrintSafariZoneSteps: ; c27b (3:427b) - dr $c27b,$c2d4 + ld a, [W_CURMAP] + cp SAFARI_ZONE_EAST + ret c + cp UNKNOWN_DUNGEON_2 + ret nc + coord hl, 0, 0 + lb bc, 3, 7 + call TextBoxBorder + coord hl, 1, 1 + ld de, wSafariSteps + lb bc, 2, 3 + call PrintNumber + coord hl, 4, 1 + ld de, SafariSteps + call PlaceString + coord hl, 1, 3 + ld de, SafariBallText + call PlaceString + ld a, [W_NUMSAFARIBALLS] + cp 10 + jr nc, .numSafariBallsTwoDigits + coord hl, 5, 3 + ld a, " " + ld [hl], a +.numSafariBallsTwoDigits + coord hl, 6, 3 + ld de, W_NUMSAFARIBALLS + lb bc, 1, 2 + jp PrintNumber + +SafariSteps: ; c2c4 (3:42c4) + db "/500@" + +SafariBallText: ; c5c9 (3:42c9) + db "BALL×× @" + +GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d1) + call GetPredefRegisters + _GetTileAndCoordsInFrontOfPlayer: ; c2d4 (3:42d4) - dr $c2d4,$cb62 + ld a, [W_YCOORD] + ld d, a + ld a, [W_XCOORD] + ld e, a + ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction + and a ; cp SPRITE_FACING_DOWN + jr nz, .notFacingDown +; facing down + aCoord 8, 11 + inc d + jr .storeTile +.notFacingDown + cp SPRITE_FACING_UP + jr nz, .notFacingUp +; facing up + aCoord 8, 7 + dec d + jr .storeTile +.notFacingUp + cp SPRITE_FACING_LEFT + jr nz, .notFacingLeft +; facing left + aCoord 6, 9 + dec e + jr .storeTile +.notFacingLeft + cp SPRITE_FACING_RIGHT + jr nz, .storeTile +; facing right + aCoord 10, 9 + inc e +.storeTile + ld c, a + ld [wTileInFrontOfPlayer], a + ret + +GetTileTwoStepsInFrontOfPlayer: ; c309 (3:4309) + xor a + ld [$ffdb], a + ld hl, W_YCOORD + ld a, [hli] + ld d, a + ld e, [hl] + ld a, [wSpriteStateData1 + 9] ; player's sprite facing direction + and a ; cp SPRITE_FACING_DOWN + jr nz, .notFacingDown +; facing down + ld hl, $ffdb + set 0, [hl] + aCoord 8, 13 + inc d + jr .storeTile +.notFacingDown + cp SPRITE_FACING_UP + jr nz, .notFacingUp +; facing up + ld hl, $ffdb + set 1, [hl] + aCoord 8, 5 + dec d + jr .storeTile +.notFacingUp + cp SPRITE_FACING_LEFT + jr nz, .notFacingLeft +; facing left + ld hl, $ffdb + set 2, [hl] + aCoord 4, 9 + dec e + jr .storeTile +.notFacingLeft + cp SPRITE_FACING_RIGHT + jr nz, .storeTile +; facing right + ld hl, $ffdb + set 3, [hl] + aCoord 12, 9 + inc e +.storeTile + ld c, a + ld [wTileInFrontOfBoulderAndBoulderCollisionResult], a + ld [wTileInFrontOfPlayer], a + ret + +CheckForCollisionWhenPushingBoulder: ; c356 (3:4356) + call GetTileTwoStepsInFrontOfPlayer + call IsTilePassable + jr c, .done + ld hl, TilePairCollisionsLand + call CheckForTilePairCollisions2 + ld a, $ff + jr c, .done ; if there is an elevation difference between the current tile and the one two steps ahead + ld a, [wTileInFrontOfBoulderAndBoulderCollisionResult] + cp $15 ; stairs tile + ld a, $ff + jr z, .done ; if the tile two steps ahead is stairs + call CheckForBoulderCollisionWithSprites +.done + ld [wTileInFrontOfBoulderAndBoulderCollisionResult], a + ret + +; sets a to $ff if there is a collision and $00 if there is no collision +CheckForBoulderCollisionWithSprites: ; c378 (3:4378) + ld a, [wBoulderSpriteIndex] + dec a + swap a + ld d, 0 + ld e, a + ld hl, wSpriteStateData2 + $14 + add hl, de + ld a, [hli] ; map Y position + ld [$ffdc], a + ld a, [hl] ; map X position + ld [$ffdd], a + ld a, [W_NUMSPRITES] + ld c, a + ld de, $f + ld hl, wSpriteStateData2 + $14 + ld a, [$ffdb] + and $3 ; facing up or down? + jr z, .pushingHorizontallyLoop +.pushingVerticallyLoop + inc hl + ld a, [$ffdd] + cp [hl] + jr nz, .nextSprite1 ; if X coordinates don't match + dec hl + ld a, [hli] + ld b, a + ld a, [$ffdb] + rrca + jr c, .pushingDown +; pushing up + ld a, [$ffdc] + dec a + jr .compareYCoords +.pushingDown + ld a, [$ffdc] + inc a +.compareYCoords + cp b + jr z, .failure +.nextSprite1 + dec c + jr z, .success + add hl, de + jr .pushingVerticallyLoop +.pushingHorizontallyLoop + ld a, [hli] + ld b, a + ld a, [$ffdc] + cp b + jr nz, .nextSprite2 + ld b, [hl] + ld a, [$ffdb] + bit 2, a + jr nz, .pushingLeft +; pushing right + ld a, [$ffdd] + inc a + jr .compareXCoords +.pushingLeft + ld a, [$ffdd] + dec a +.compareXCoords + cp b + jr z, .failure +.nextSprite2 + dec c + jr z, .success + add hl, de + jr .pushingHorizontallyLoop +.failure + ld a, $ff + ret +.success + xor a + ret + +ApplyOutOfBattlePoisonDamage: ; c3de (3:43de) + ld a, [wd730] + add a + jp c, .noBlackOut ; no black out if joypad states are being simulated + ld a, [wd493] + bit 7, a + jp nz, .noBlackOut + ld a, [wd72e] + bit 6, a + jp nz, .noBlackOut + ld a, [wPartyCount] + and a + jp z, .noBlackOut + call IncrementDayCareMonExp + call Func_c4c7 + ld a, [wStepCounter] + and $3 ; is the counter a multiple of 4? + jp nz, .skipPoisonEffectAndSound ; only apply poison damage every fourth step + ld [wWhichPokemon], a + ld hl, wPartyMon1Status + ld de, wPartySpecies +.applyDamageLoop + ld a, [hl] + and (1 << PSN) + jr z, .nextMon2 ; not poisoned + dec hl + dec hl + ld a, [hld] + ld b, a + ld a, [hli] + or b + jr z, .nextMon ; already fainted +; subtract 1 from HP + ld a, [hl] + dec a + ld [hld], a + inc a + jr nz, .noBorrow +; borrow 1 from upper byte of HP + dec [hl] + inc hl + jr .nextMon +.noBorrow + ld a, [hli] + or [hl] + jr nz, .nextMon ; didn't faint from damage +; the mon fainted from the damage + push hl + inc hl + inc hl + ld [hl], a + ld a, [de] + ld [wd11e], a + push de + ld a, [wWhichPokemon] + ld hl, wPartyMonNicks + call GetPartyMonName + xor a + ld [wJoyIgnore], a + call EnableAutoTextBoxDrawing + ld a, $d0 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + callab Func_fce18 + jr nc, .curMonNotPlayerPikachu + ld e, $3 + callab Func_f0000 + calladb_Func_f430a $9 +.curMonNotPlayerPikachu + pop de + pop hl +.nextMon + inc hl + inc hl +.nextMon2 + inc de + ld a, [de] + inc a + jr z, .applyDamageLoopDone + ld bc, wPartyMon2 - wPartyMon1 + add hl, bc + push hl + ld hl, wWhichPokemon + inc [hl] + pop hl + jr .applyDamageLoop +.applyDamageLoopDone + ld hl, wPartyMon1Status + ld a, [wPartyCount] + ld d, a + ld e, 0 +.countPoisonedLoop + ld a, [hl] + and (1 << PSN) + or e + ld e, a + ld bc, wPartyMon2 - wPartyMon1 + add hl, bc + dec d + jr nz, .countPoisonedLoop + ld a, e + and a ; are any party members poisoned? + jr z, .skipPoisonEffectAndSound + ld b, $2 + predef ChangeBGPalColor0_4Frames ; change BG white to dark grey for 4 frames + ld a, SFX_POISONED + call PlaySound +.skipPoisonEffectAndSound + predef AnyPartyAlive + ld a, d + and a + jr nz, .noBlackOut + call EnableAutoTextBoxDrawing + ld a, $d1 + ld [hSpriteIndexOrTextID], a + call DisplayTextID + ld hl, wd72e + set 5, [hl] + ld a, $ff + jr .done +.noBlackOut + xor a +.done + ld [wOutOfBattleBlackout], a + ret + +Func_c4c7: ; c4c7 (3:44c7) + ld a, [wStepCounter] + and a + jr nz, .asm_c4de + call Random + and $1 + jr z, .asm_c4de + calladb_Func_f430a $6 +.asm_c4de + ld hl, wd471 + ld a, [hl] + cp $80 + jr z, .asm_c4ef + jr c, .asm_c4ea + dec a + dec a +.asm_c4ea + inc a + ld [hl], a + cp $80 + ret nz +.asm_c4ef + xor a + ld [wd49c], a + ret + +LoadTilesetHeader: ; c4f4 (3:44f4) + call GetPredefRegisters + push hl + ld d, 0 + ld a, [W_CURMAPTILESET] + add a + add a + ld e, a + ld hl, Tilesets + add hl, de + add hl, de + add hl, de + ld de, W_TILESETBANK + ld bc, $b + call CopyData + ld a, [hl] + ld [hTilesetType], a + xor a + ld [$ffd8], a + pop hl + ld a, [W_CURMAPTILESET] + push hl + push de + ld hl, DungeonTilesets + ld de, $1 + call IsInArray + pop de + pop hl + jr c, .notDungeonTileset + ld a, [W_CURMAPTILESET] + ld b, a + ld a, [hPreviousTileset] + cp b + jr z, .done +.notDungeonTileset + ld a, [wDestinationWarpID] + cp $ff + jr z, .done + call LoadDestinationWarpPosition + ld a, [W_YCOORD] + and $1 + ld [W_YBLOCKCOORD], a + ld a, [W_XCOORD] + and $1 + ld [W_XBLOCKCOORD], a +.done + ret + +INCLUDE "data/dungeon_tilesets.asm" + +INCLUDE "data/tileset_headers.asm" + +IncrementDayCareMonExp: ; c684 (3:4684) + ld a, [W_DAYCARE_IN_USE] + and a + ret z + ld hl, wDayCareMonExp + 2 + inc [hl] + ret nz + dec hl + inc [hl] + ret nz + dec hl + inc [hl] + ld a, [hl] + cp $50 + ret c + ld a, $50 + ld [hl], a + ret + +INCLUDE "data/hide_show_data.asm" + LoadWildData: ; cb62 (3:4b62) dr $cb62,$d2ed UseItem_: ; d2ed (3:52ed) |