From 71ef1c3252f67ff5c334c9752effd4ea82bf309f Mon Sep 17 00:00:00 2001 From: codemann8 Date: Wed, 31 Mar 2021 21:27:23 -0500 Subject: [PATCH] Added data tables, began initial ASM structure --- Rom.py | 6 +- asm/owrando.asm | 624 ++++++++++++++++++++++++++++++++++++++--- data/base2current.bps | Bin 132594 -> 135682 bytes data/base2current.json | 2 +- 4 files changed, 586 insertions(+), 46 deletions(-) diff --git a/Rom.py b/Rom.py index 0e03070f..4a0bb974 100644 --- a/Rom.py +++ b/Rom.py @@ -27,7 +27,7 @@ from EntranceShuffle import door_addresses, exit_ids JAP10HASH = '03a63945398191337e896e5771f77173' -RANDOMIZERBASEHASH = 'd987a81ba4db37ba9a50730a08616eb1' +RANDOMIZERBASEHASH = '38cca21e806916ddc09c251a1da899ad' class JsonRom(object): @@ -589,6 +589,10 @@ def patch_rom(world, rom, player, team, enemized, is_mystery=False): if world.pot_contents[player]: write_pots_to_rom(rom, world.pot_contents[player]) + # patch overworld edges + if world.owShuffle[player] == 'full': + rom.write_byte(0x150002, 2) + # patch entrance/exits/holes for region in world.regions: for exit in region.exits: diff --git a/asm/owrando.asm b/asm/owrando.asm index 76c94bc2..7caeb307 100644 --- a/asm/owrando.asm +++ b/asm/owrando.asm @@ -1,14 +1,13 @@ -org $aa8000 +org $aa8000 ;150000 db $4f, $52 ;OR -OWShuffleMode: -dw 1 -OWShuffleFlags: +OWMode: +db 0 +OWFlags: dw 0 -OWShuffleReserved: +org $aa8010 +OWReserved: dw 0 - - ;Hooks org $02a999 jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA @@ -16,6 +15,25 @@ jsl OWEdgeTransition : nop #4 ;LDA $02A4E3,X : ORA $7EF3CA ;Code org $aaa000 OWEdgeTransition: +{ + phy + lda.l OWMode : beq .vanillaOW + jsl OWShuffle + bra .return + + .vanillaOW + jsl OWVanilla + + .return + ply + rtl +} +OWVanilla: +{ + lda $02a4e3,X : ora $7ef3ca + rtl +} +OWShuffle: { ;Assume you're at links house = $2c ;transitioning right will result in X = $2d @@ -24,51 +42,569 @@ OWEdgeTransition: ;down X = $34 ;compares X to determine direction of edge transition - cpx $8a : bcc .upOrLeft - dex : cpx $8a : bne .downEdge + lda $700 : lsr : sta $700 + cpx $700 : bcc .upOrLeft + dex : cpx $700 : inx : bne .downEdge bra .rightEdge .upOrLeft - inx : cpx $8a : bne .upEdge + inx : cpx $700 : dex : bne .upEdge bra .leftEdge ;sets new OWID and coords - .downEdge - dec $21 : dec $21 - dec $e7 : dec $e7 - dec $e9 : dec $e9 - dec $611 : dec $611 - dec $613 : dec $613 - lda $700 : sec : sbc #$10 : sta $700 - bra .return - - .rightEdge - dec $23 : dec $23 - dec $e1 : dec $e1 - dec $e3 : dec $e3 - dec $615 : dec $615 - dec $617 : dec $617 - dec $700 : dec $700 - bra .return - .upEdge - inc $21 : inc $21 - inc $e7 : inc $e7 - inc $e9 : inc $e9 - inc $611 : inc $611 - inc $613 : inc $613 - lda $700 : clc : adc #$10 : sta $700 - bra .return + lda #$0 : sta $418 + ;inc $21 : inc $21 + ;inc $e7 : inc $e7 + ;inc $e9 : inc $e9 + ;inc $611 : inc $611 + ;inc $613 : inc $613 + ;lda $700 : clc : adc #$10 : sta $700 + bra .setOWID + + .downEdge + lda #$1 : sta $418 + ;dec $21 : dec $21 + ;dec $e7 : dec $e7 + ;dec $e9 : dec $e9 + ;dec $611 : dec $611 + ;dec $613 : dec $613 + ;lda $700 : sec : sbc #$10 : sta $700 + bra .setOWID .leftEdge - inc $23 : inc $23 - inc $e1 : inc $e1 - inc $e3 : inc $e3 - inc $615 : inc $615 - inc $617 : inc $617 - inc $700 : inc $700 + lda #$2 : sta $418 + ;inc $23 : inc $23 + ;inc $e1 : inc $e1 + ;inc $e3 : inc $e3 + ;inc $615 : inc $615 + ;inc $617 : inc $617 + ;inc $700 : inc $700 + bra .setOWID + + .rightEdge + lda #$3 : sta $418 + ;dec $23 : dec $23 + ;dec $e1 : dec $e1 + ;dec $e3 : dec $e3 + ;dec $615 : dec $615 + ;dec $617 : dec $617 + ;dec $700 : dec $700 + bra .setOWID + + .setOWID + ;look up transitions in current area in table OWEdgeOffsets + ;offset is (8bytes * OW Slot ID() + (2byte * direction slot) + rep #$30 + asl : pha ;2 bytes per direction + lda $8a : and #$0040 : adc $700 : asl #3 + adc 1,S : tax + pla + + lda #0 + pha + tsx + lda.l OWEdgeOffsets,x ;load value from offsets table + and #$000f + + .nextTransition + beq .noTransition ;number of transitions + pha + + ;lda.l OWEdgeOffsets,x : ror #4 : and #$0fff : tax ;record id of first transition in table + ;multiply ^ by 10, 10bytes per record + ;pha + ;sep #$20 + ;pla : sta $211b : pla : sta $211b + ;lda #$0a : sta $211c + ;rep #$20 + ;lda $2134 + ;lda.l OWEdgeTable,a + ;nop + + plx : dex : pla : inc : pha : txa : bra .nextTransition + + + ;Infinite loop at Link's + ;lda #$2c + .noTransition + pla + sep #$30 + + jsl OWVanilla + bra .return .return - ;Infinite loop at Link's - lda #$2c rtl -} \ No newline at end of file +} + +;Data +org $aab000 +OWEdgeOffsets: +;2 bytes per each direction per each OW Slot, order is NSWE per value at $0418 +;AAAB, A = offset to the transition table, B = number of transitions +dw $0001, $0000, $0000, $0000 ;OW Slot 00, OWID 0x00 Lost Woods +dw $0000, $0000, $0000, $0011 ;OW Slot 01, OWID 0x00 +dw $0000, $0021, $0031, $0000 ;OW Slot 02, OWID 0x02 Lumberjack +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0041 +dw $0000, $0000, $0051, $0000 +dw $0000, $0000, $0000, $0061 +dw $0000, $0000, $0071, $0000 + +dw $0000, $0082, $0000, $0000 +dw $0000, $00a1, $0000, $0000 +dw $00b1, $00c1, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $00d1 +dw $0000, $0000, $00e1, $0000 +dw $0000, $0000, $0000, $0000 +dw $00f1, $0101, $0000, $0000 ;Zora + +dw $0112, $0132, $0000, $0000 +dw $0151, $0161, $0000, $0172 +dw $0191, $01a2, $01c2, $01e2 +dw $0000, $0000, $0202, $0221 +dw $0000, $0000, $0231, $0241 +dw $0000, $0253, $0281, $0293 +dw $0000, $0000, $02c3, $02f2 +dw $0311, $0000, $0322, $0000 + +dw $0342, $0000, $0000, $0000 ;OW Slot 18, OWID 0x18 Kakariko +dw $0361, $0000, $0000, $0000 +dw $0372, $0000, $0000, $0391 +dw $0000, $0000, $03a1, $0000 +dw $0000, $0000, $0000, $0000 +dw $03b3, $03e1, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000 + +dw $0000, $0000, $0000, $0000 +dw $0000, $03f1, $0000, $0401 +dw $0000, $0000, $0411, $0000 +dw $0000, $0421, $0000, $0000 +dw $0000, $0431, $0000, $0441 +dw $0451, $0461, $0471, $0000 +dw $0000, $0481, $0000, $0000 +dw $0000, $0491, $0000, $0000 + +dw $0000, $0000, $0000, $04a1 +dw $04b1, $0000, $04c1, $04d1 +dw $0000, $04e2, $0501, $0000 +dw $0511, $0521, $0000, $0533 +dw $0561, $0571, $0583, $05b1 ;Links +dw $05c1, $05d1, $05e2, $0602 ;Hobo +dw $0621, $0632, $0652, $0000 +dw $0671, $0000, $0000, $0000 + +dw $0000, $0000, $0000, $0000 ;OW Slot 30, OWID 0x30 Desert +dw $0000, $0000, $0000, $0000 +dw $0682, $0000, $0000, $06a1 +dw $06b1, $06c1, $06d1, $06e3 +dw $0711, $0721, $0733, $0000 +dw $0761, $0000, $0000, $0000 +dw $0772, $0000, $0000, $0000 +dw $0000, $0792, $0000, $0000 + +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $07b2 +dw $0000, $0000, $07d2, $07f2 +dw $0811, $0000, $0822, $0841 +dw $0851, $0000, $0861, $0871 +dw $0000, $0000, $0881, $0000 +dw $0000, $0000, $0000, $0892 +dw $08b2, $0000, $08d2, $0000 + +dw $0000, $0000, $0000, $0000 ;OW Slot 40, OWID 0x40 Skull Woods +dw $0000, $0000, $0000, $08f1 +dw $0000, $0901, $0911, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0921 +dw $0000, $0000, $0931, $0000 +dw $0000, $0000, $0000, $0941 +dw $0000, $0000, $0951, $0000 + +dw $0000, $0962, $0000, $0000 +dw $0000, $0981, $0000, $0000 +dw $0991, $09a1, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $09b1 +dw $0000, $0000, $09c1, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $09d1, $0000, $0000 + +dw $09e2, $0a02, $0000, $0000 +dw $0a21, $0a31, $0000, $0a42 +dw $0a61, $0a72, $0a92, $0ab2 +dw $0000, $0000, $0ad2, $0af1 +dw $0000, $0000, $0b01, $0b11 +dw $0000, $0b23, $0b51, $0b63 +dw $0000, $0000, $0b93, $0bc2 +dw $0be1, $0000, $0bf2, $0000 + +dw $0c12, $0000, $0000, $0000 ;OW Slot 58, OWID 0x58 Village of Outcasts +dw $0c31, $0000, $0000, $0000 +dw $0c42, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0c63, $0c91, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000 + +dw $0000, $0000, $0000, $0000 +dw $0000, $0ca1, $0000, $0cb1 +dw $0000, $0000, $0cc1, $0000 +dw $0000, $0cd1, $0000, $0000 +dw $0000, $0ce1, $0000, $0cf1 +dw $0d01, $0d11, $0d21, $0000 +dw $0000, $0d31, $0000, $0000 +dw $0000, $0d41, $0000, $0000 + +dw $0000, $0000, $0000, $0d52 +dw $0d71, $0000, $0d82, $0da1 +dw $0000, $0db2, $0dd1, $0000 +dw $0de1, $0df1, $0000, $0e03 +dw $0e31, $0e41, $0e53, $0e81 +dw $0e91, $0ea1, $0eb1, $0ec2 +dw $0ee1, $0ef2, $0f12, $0000 +dw $0f31, $0000, $0000, $0000 + +dw $0000, $0000, $0000, $0000 ;OW Slot 70, OWID 0x70 Mire +dw $0000, $0000, $0000, $0000 +dw $0f42, $0000, $0000, $0f61 +dw $0f71, $0f81, $0f91, $0fa3 +dw $0fd1, $0fe1, $0ff3, $0000 +dw $1011, $0000, $0000, $0000 +dw $1022, $0000, $0000, $0000 +dw $0000, $1042, $0000, $0000 + +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $0000 +dw $0000, $0000, $0000, $1062 +dw $1081, $0000, $1092, $10b1 +dw $10c1, $0000, $10d1, $10e1 +dw $0000, $0000, $10f1, $0000 +dw $0000, $0000, $0000, $1102 +dw $1122, $0000, $1142, $0000 + +org $aab500 +OWEdgeConnections: +;pointers to destination transitions in OWEdgeTable +dw $0117, $0003, $000b, $0001, $0005, $0004, $0007, $0006 +dw $0011, $0012, $0015, $0002, $0019, $000e, $000d, $0119, $0031 +dw $0008, $0009, $0034, $0035, $000a, $0036, $001c, $001d, $000c, $0037, $0038, $0017, $0018, $0020, $0021, $001e, $001f, $0023, $0022, $0028, $003b, $003c, $003d, $0024, $002c, $002d, $002e, $0029, $002a, $002b, $0032, $0033, $0010, $002f, $0030 +dw $0013, $0014, $0016, $001a, $001b, $003a, $0039, $0025, $0026, $0027, $0045 +dw $004b, $0041, $0040, $0051, $0056, $0047, $003e, $005c, $0044, $0062, $0067 +dw $004c, $003f, $004a, $0050, $0068, $0069, $004d, $0042, $006b, $0058, $0059, $005a, $0043, $0071, $0053, $0054, $0055, $005f, $0046, $0076, $0118, $005b, $0065, $0066, $0048, $0077, $0078, $0060, $0061, $0049 +dw $004e, $004f, $006d, $0052, $0081, $006a, $0073, $0074, $0075, $0057, $0085, $006e, $006f, $0070, $005d, $0063, $0064, $008b, $008c +dw $007d, $007e, $007b, $007c, $0082, $0083, $006c, $007f, $0080, $0086, $0072, $0084, $0088, $0087, $008d, $008e, $0079, $007a, $0089, $008a +dw $0090, $008f, $0099, $0093, $0092, $0095, $0094 +dw $009e, $009f, $00a2, $0091, $00a6, $009c, $009b, $00be +dw $0096, $0097, $00c1, $00c2, $0098, $00c3, $00a9, $00aa, $009a, $00c4, $00c5, $00a4, $00a5, $00ad, $00ae, $00ab, $00ac, $00b0, $00af, $00b5, $00c6, $00c7, $00c8, $00b1, $00b9, $00ba, $00bb, $00b6, $00b7, $00b8, $00bf, $00c0, $009d, $00bc, $00bd +dw $00a0, $00a1, $00a3, $00a7, $00a8, $00b2, $00b3, $00b4, $00d0 +dw $00d7, $00cc, $00cb, $00de, $00e3, $00d2, $00c9, $00e9, $00cf, $00ee, $00f3 +dw $00d8, $00d9, $00ca, $00d5, $00d6, $00dd, $00f4, $00f5, $00da, $00cd, $00f7, $00e5, $00e6, $00e7, $00ce, $00fd, $00e0, $00e1, $00e2, $00eb, $00d1, $0102, $00e8, $00f1, $00f2, $00d3, $0103, $0104, $00ec, $00ed, $00d4 +dw $00db, $00dc, $00f9, $00df, $0109, $00f6, $00ff, $0100, $0101, $00e4, $010d, $00fa, $00fb, $00fc, $00ea, $00ef, $00f0, $0113, $0114 +dw $010a, $010b, $00f8, $0107, $0108, $010e, $00fe, $010c, $0110, $010f, $0115, $0116, $0105, $0106, $0111, $0112 +dw $0000, $005e, $000f + +org $aab800 +OWEdgeTable: +;Min Coord, Max Coord, Width, Midpoint, OWID/OW Slot +dw $00a0, $00a0, $0000, $00a0, $0000 ;Lost Woods +dw $0070, $00a0, $0030, $0088, $0001 +dw $0458, $0540, $00e8, $04cc, $0202 +dw $0070, $00a0, $0030, $0088, $0202 +dw $0068, $0078, $0010, $0070, $0304 +dw $0068, $0078, $0010, $0070, $0505 +dw $0068, $0088, $0020, $0078, $0506 +dw $0068, $0088, $0020, $0078, $0707 + +dw $0058, $0058, $0000, $0058, $0008 +dw $0178, $0178, $0000, $0178, $0008 +dw $0388, $0388, $0000, $0388, $0009 +dw $0458, $0540, $00e8, $04cc, $0a0a +dw $0480, $05b0, $0130, $0518, $0a0a +dw $0318, $0368, $0050, $0340, $0b0c +dw $0318, $0368, $0050, $0340, $0d0d +dw $0f38, $0f60, $0028, $0f4c, $0f0f +dw $0f70, $0f90, $0020, $0f80, $0f0f + +dw $0058, $0058, $0000, $0058, $1010 +dw $0178, $0178, $0000, $0178, $1010 +dw $0078, $0098, $0020, $0088, $1010 +dw $0138, $0158, $0020, $0148, $1010 +dw $0388, $0388, $0000, $0388, $1111 +dw $02e8, $0348, $0060, $0318, $1111 +dw $0450, $0488, $0038, $046c, $1111 +dw $0560, $05a0, $0040, $0580, $1111 +dw $0480, $05b0, $0130, $0518, $1212 +dw $0478, $04d0, $0058, $04a4, $1212 +dw $0510, $0538, $0028, $0524, $1212 +dw $0450, $0488, $0038, $046c, $1212 +dw $0560, $05a0, $0040, $0580, $1212 +dw $0488, $0500, $0078, $04c4, $1212 +dw $0538, $05a8, $0070, $0570, $1212 +dw $0488, $0500, $0078, $04c4, $1313 +dw $0538, $05a8, $0070, $0570, $1313 +dw $0470, $05a8, $0138, $050c, $1313 +dw $0470, $05a8, $0138, $050c, $1414 +dw $0470, $0598, $0128, $0504, $1414 +dw $0a48, $0af0, $00a8, $0a9c, $1515 +dw $0b28, $0b38, $0010, $0b30, $1515 +dw $0b70, $0ba0, $0030, $0b88, $1515 +dw $0470, $0598, $0128, $0504, $1515 +dw $0480, $0488, $0008, $0484, $1515 +dw $04b0, $0510, $0060, $04e0, $1515 +dw $0560, $0588, $0028, $0574, $1515 +dw $0480, $0488, $0008, $0484, $1616 +dw $04b0, $0510, $0060, $04e0, $1616 +dw $0560, $0588, $0028, $0574, $1616 +dw $0450, $0458, $0008, $0454, $1616 +dw $0480, $04a8, $0028, $0494, $1616 +dw $0f70, $0f90, $0020, $0f80, $1717 +dw $0450, $0458, $0008, $0454, $1717 +dw $0480, $04a8, $0028, $0494, $1717 + +dw $0078, $0098, $0020, $0088, $1818 ;Kakariko +dw $0138, $0158, $0020, $0148, $1818 +dw $02e8, $0348, $0060, $0318, $1819 +dw $0478, $04d0, $0058, $04a4, $1a1a +dw $0510, $0538, $0028, $0524, $1a1a +dw $0718, $0738, $0020, $0728, $1a1a +dw $0718, $0738, $0020, $0728, $1b1b +dw $0a48, $0af0, $00a8, $0a9c, $1d1d +dw $0b28, $0b38, $0010, $0b30, $1d1d +dw $0b70, $0ba0, $0030, $0b88, $1d1d +dw $0a40, $0b10, $00d0, $0aa8, $1d1d + +dw $0350, $0390, $0040, $0370, $1821 +dw $0908, $0948, $0040, $0928, $1821 +dw $0908, $0948, $0040, $0928, $2222 +dw $0670, $06a8, $0038, $068c, $1b23 +dw $0898, $09b0, $0118, $0924, $1b24 +dw $0878, $08a8, $0030, $0890, $1b24 +dw $0a40, $0b10, $00d0, $0aa8, $2525 +dw $0a40, $0ba0, $0160, $0af0, $2525 +dw $0878, $08a8, $0030, $0890, $2525 +dw $0c70, $0c90, $0020, $0c80, $1e26 +dw $0f70, $0f80, $0010, $0f78, $1e27 + +dw $0bb8, $0bc8, $0010, $0bc0, $2828 ;Race Game +dw $0350, $0390, $0040, $0370, $2929 +dw $0bb8, $0bc8, $0010, $0bc0, $2929 +dw $0b60, $0ba0, $0040, $0b80, $2929 +dw $0430, $0468, $0038, $044c, $2a2a +dw $04d8, $04f8, $0020, $04e8, $2a2a +dw $0b60, $0ba0, $0040, $0b80, $2a2a +dw $0670, $06a8, $0038, $068c, $2b2b +dw $0688, $06b0, $0028, $069c, $2b2b +dw $0ab0, $0ad0, $0020, $0ac0, $2b2b +dw $0af0, $0b40, $0050, $0b18, $2b2b +dw $0b78, $0ba0, $0028, $0b8c, $2b2b +dw $0898, $09b0, $0118, $0924, $2c2c ;Links House +dw $08d0, $08f0, $0020, $08e0, $2c2c +dw $0ab0, $0ad0, $0020, $0ac0, $2c2c +dw $0af0, $0b40, $0050, $0b18, $2c2c +dw $0b78, $0ba0, $0028, $0b8c, $2c2c +dw $0b68, $0b98, $0030, $0b80, $2c2c +dw $0a40, $0ba0, $0160, $0af0, $2d2d +dw $0a80, $0b40, $00c0, $0ae0, $2d2d +dw $0b10, $0b28, $0018, $0b1c, $2d2d +dw $0b68, $0b98, $0030, $0b80, $2d2d +dw $0a68, $0ab8, $0050, $0a90, $2d2d +dw $0b00, $0b78, $0078, $0b3c, $2d2d +dw $0c70, $0c90, $0020, $0c80, $2e2e +dw $0d38, $0d58, $0020, $0d48, $2e2e +dw $0d90, $0da0, $0010, $0d98, $2e2e +dw $0a68, $0ab8, $0050, $0a90, $2e2e +dw $0b00, $0b78, $0078, $0b3c, $2e2e +dw $0f70, $0f80, $0010, $0f78, $2f2f + +dw $0430, $0468, $0038, $044c, $3232 +dw $04d8, $04f8, $0020, $04e8, $3232 +dw $0c50, $0db8, $0168, $0d04, $3232 +dw $0688, $06b0, $0028, $069c, $3333 +dw $06a0, $07b0, $0110, $0728, $3333 +dw $0c50, $0db8, $0168, $0d04, $3333 +dw $0c78, $0ce3, $006b, $0cad, $3333 +dw $0ce4, $0d33, $004f, $0d0b, $3333 +dw $0d34, $0db8, $0084, $0d76, $3333 +dw $08d0, $08f0, $0020, $08e0, $3434 +dw $0830, $09b0, $0180, $08f0, $3434 +dw $0c78, $0ce3, $006b, $0cad, $3434 +dw $0ce4, $0d33, $004f, $0d0b, $3434 +dw $0d34, $0db8, $0084, $0d76, $3434 +dw $0a80, $0b40, $00c0, $0ae0, $3535 +dw $0d38, $0d58, $0020, $0d48, $3536 +dw $0d90, $0da0, $0010, $0d98, $3536 +dw $0e78, $0e88, $0010, $0e80, $3737 +dw $0ee0, $0fc0, $00e0, $0f50, $3737 + +dw $0ea8, $0f20, $0078, $0ee4, $3039 +dw $0f70, $0fa8, $0038, $0f8c, $3039 +dw $0ea8, $0f20, $0078, $0ee4, $3a3a +dw $0f70, $0fa8, $0038, $0f8c, $3a3a +dw $0f18, $0f18, $0000, $0f18, $3a3a +dw $0fc8, $0fc8, $0000, $0fc8, $3a3a +dw $06a0, $07b0, $0110, $0728, $3b3b +dw $0f18, $0f18, $0000, $0f18, $3b3b +dw $0fc8, $0fc8, $0000, $0fc8, $3b3b +dw $0e28, $0fb8, $0190, $0ef0, $3b3b +dw $0830, $09b0, $0180, $08f0, $3c3c +dw $0e28, $0fb8, $0190, $0ef0, $3c3c +dw $0f78, $0fb8, $0040, $0f98, $3c3c +dw $0f78, $0fb8, $0040, $0f98, $353d +dw $0f20, $0f40, $0020, $0f30, $353e +dw $0f70, $0fb8, $0048, $0f94, $353e +dw $0e78, $0e88, $0010, $0e80, $3f3f +dw $0ee0, $0fc0, $00e0, $0f50, $3f3f +dw $0f20, $0f40, $0020, $0f30, $3f3f +dw $0f70, $0fb8, $0048, $0f94, $3f3f + +dw $0070, $00a0, $0030, $0088, $4041 ;Skull Woods +dw $0070, $00a0, $0030, $0088, $4242 +dw $0458, $0540, $00e8, $04cc, $4242 +dw $0068, $0078, $0010, $0070, $4344 +dw $0068, $0078, $0010, $0070, $4545 +dw $0068, $0088, $0020, $0078, $4546 +dw $0068, $0088, $0020, $0078, $4747 + +dw $0058, $0058, $0000, $0058, $4048 +dw $0178, $0178, $0000, $0178, $4048 +dw $0388, $0388, $0000, $0388, $4049 +dw $0458, $0540, $00e8, $04cc, $4a4a +dw $0480, $05b0, $0130, $0518, $4a4a +dw $0318, $0368, $0050, $0340, $434c +dw $0318, $0368, $0050, $0340, $454d +dw $0f70, $0f90, $0020, $0f80, $4f4f + +dw $0058, $0058, $0000, $0058, $5050 +dw $0178, $0178, $0000, $0178, $5050 +dw $0078, $0098, $0020, $0088, $5050 +dw $0138, $0158, $0020, $0148, $5050 +dw $0388, $0388, $0000, $0388, $5151 +dw $02e8, $0348, $0060, $0318, $5151 +dw $0450, $0488, $0038, $046c, $5151 +dw $0560, $05a0, $0040, $0580, $5151 +dw $0480, $05b0, $0130, $0518, $5252 +dw $0478, $04d0, $0058, $04a4, $5252 +dw $0510, $0538, $0028, $0524, $5252 +dw $0450, $0488, $0038, $046c, $5252 +dw $0560, $05a0, $0040, $0580, $5252 +dw $0488, $0500, $0078, $04c4, $5252 +dw $0538, $05a8, $0070, $0570, $5252 +dw $0488, $0500, $0078, $04c4, $5353 +dw $0538, $05a8, $0070, $0570, $5353 +dw $0470, $05a8, $0138, $050c, $5353 +dw $0470, $05a8, $0138, $050c, $5454 +dw $0470, $0598, $0128, $0504, $5454 +dw $0a48, $0af0, $00a8, $0a9c, $5555 +dw $0b28, $0b38, $0010, $0b30, $5555 +dw $0b70, $0ba0, $0030, $0b88, $5555 +dw $0470, $0598, $0128, $0504, $5555 +dw $0480, $0488, $0008, $0484, $5555 +dw $04b0, $0510, $0060, $04e0, $5555 +dw $0560, $0588, $0028, $0574, $5555 +dw $0480, $0488, $0008, $0484, $5656 +dw $04b0, $0510, $0060, $04e0, $5656 +dw $0560, $0588, $0028, $0574, $5656 +dw $0450, $0458, $0008, $0454, $5656 +dw $0480, $04a8, $0028, $0494, $5656 +dw $0f70, $0f90, $0020, $0f80, $5757 +dw $0450, $0458, $0008, $0454, $5757 +dw $0480, $04a8, $0028, $0494, $5757 + +dw $0078, $0098, $0020, $0088, $5858 ;Village of Outcasts +dw $0138, $0158, $0020, $0148, $5858 +dw $02e8, $0348, $0060, $0318, $5859 +dw $0478, $04d0, $0058, $04a4, $5a5a +dw $0510, $0538, $0028, $0524, $5a5a +dw $0a48, $0af0, $00a8, $0a9c, $5d5d +dw $0b28, $0b38, $0010, $0b30, $5d5d +dw $0b70, $0ba0, $0030, $0b88, $5d5d +dw $0a40, $0b10, $00d0, $0aa8, $5d5d + +dw $0350, $0390, $0040, $0370, $5861 +dw $0908, $0948, $0040, $0928, $5861 +dw $0908, $0948, $0040, $0928, $6262 +dw $0670, $06a8, $0038, $068c, $5b63 +dw $0898, $09b0, $0118, $0924, $5b64 +dw $0878, $08a8, $0030, $0890, $5b64 +dw $0a40, $0b10, $00d0, $0aa8, $6565 +dw $0a40, $0ba0, $0160, $0af0, $6565 +dw $0878, $08a8, $0030, $0890, $6565 +dw $0c70, $0c90, $0020, $0c80, $5f66 +dw $0f70, $0f80, $0010, $0f78, $5f67 + +dw $0b60, $0b68, $0008, $0b64, $6868 ;Dig Game +dw $0bb8, $0bc8, $0010, $0bc0, $6868 +dw $0350, $0390, $0040, $0370, $6969 +dw $0b60, $0b68, $0008, $0b64, $6969 +dw $0bb8, $0bc8, $0010, $0bc0, $6969 +dw $0b60, $0ba0, $0040, $0b80, $6969 +dw $0430, $0468, $0038, $044c, $6a6a +dw $04d8, $04f8, $0020, $04e8, $6a6a +dw $0b60, $0ba0, $0040, $0b80, $6a6a +dw $0670, $06a8, $0038, $068c, $6b6b +dw $0688, $06b0, $0028, $069c, $6b6b +dw $0ab0, $0ad0, $0020, $0ac0, $6b6b +dw $0af0, $0b40, $0050, $0b18, $6b6b +dw $0b78, $0ba0, $0028, $0b8c, $6b6b +dw $0898, $09b0, $0118, $0924, $6c6c +dw $08d0, $08f0, $0020, $08e0, $6c6c +dw $0ab0, $0ad0, $0020, $0ac0, $6c6c +dw $0af0, $0b40, $0050, $0b18, $6c6c +dw $0b78, $0ba0, $0028, $0b8c, $6c6c +dw $0b68, $0b98, $0030, $0b80, $6c6c +dw $0a40, $0ba0, $0160, $0af0, $6d6d +dw $0a80, $0b40, $00c0, $0ae0, $6d6d +dw $0b68, $0b98, $0030, $0b80, $6d6d +dw $0a68, $0ab8, $0050, $0a90, $6d6d +dw $0b00, $0b78, $0078, $0b3c, $6d6d +dw $0c70, $0c90, $0020, $0c80, $6e6e +dw $0d38, $0d58, $0020, $0d48, $6e6e +dw $0d90, $0da0, $0010, $0d98, $6e6e +dw $0a68, $0ab8, $0050, $0a90, $6e6e +dw $0b00, $0b78, $0078, $0b3c, $6e6e +dw $0f70, $0f80, $0010, $0f78, $6f6f + +dw $0430, $0468, $0038, $044c, $7272 +dw $04d8, $04f8, $0020, $04e8, $7272 +dw $0c50, $0db8, $0168, $0d04, $7272 +dw $0688, $06b0, $0028, $069c, $7373 +dw $06a0, $07b0, $0110, $0728, $7373 +dw $0c50, $0db8, $0168, $0d04, $7373 +dw $0c78, $0ce3, $006b, $0cad, $7373 +dw $0ce4, $0d33, $004f, $0d0b, $7373 +dw $0d34, $0db8, $0084, $0d76, $7373 +dw $08d0, $08f0, $0020, $08e0, $7474 +dw $0830, $09b0, $0180, $08f0, $7474 +dw $0c78, $0ce3, $006b, $0cad, $7474 +dw $0ce4, $0d33, $004f, $0d0b, $7474 +dw $0d34, $0db8, $0084, $0d76, $7474 +dw $0a80, $0b40, $00c0, $0ae0, $7575 +dw $0d38, $0d58, $0020, $0d48, $7576 +dw $0d90, $0da0, $0010, $0d98, $7576 +dw $0e78, $0e88, $0010, $0e80, $7777 +dw $0ee0, $0fc0, $00e0, $0f50, $7777 + +dw $0f18, $0f18, $0000, $0f18, $707a +dw $0fc8, $0fc8, $0000, $0fc8, $707a +dw $06a0, $07b0, $0110, $0728, $7b7b +dw $0f18, $0f18, $0000, $0f18, $7b7b +dw $0fc8, $0fc8, $0000, $0fc8, $7b7b +dw $0e28, $0fb8, $0190, $0ef0, $7b7b +dw $0830, $09b0, $0180, $08f0, $7c7c +dw $0e28, $0fb8, $0190, $0ef0, $7c7c +dw $0f78, $0fb8, $0040, $0f98, $7c7c +dw $0f78, $0fb8, $0040, $0f98, $757d +dw $0f20, $0f40, $0020, $0f30, $757e +dw $0f70, $0fb8, $0048, $0f94, $757e +dw $0e78, $0e88, $0010, $0e80, $7f7f +dw $0ee0, $0fc0, $00e0, $0f50, $7f7f +dw $0f20, $0f40, $0020, $0f30, $7f7f +dw $0f70, $0fb8, $0048, $0f94, $7f7f + +dw $0080, $0080, $0000, $0080, $8080 ;Pedestal +dw $0058, $00c0, $0068, $008c, $8181 ;Hobo +dw $0288, $02c0, $0038, $02a4, $8282 ;Zora diff --git a/data/base2current.bps b/data/base2current.bps index 75763f9b647c9c4a2d4ca9ffa1ba6f2e9651583b..09cf8732117acfb782405b461dbc2e77bfe6d814 100644 GIT binary patch delta 3998 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 delta 897 zcmXAje@K%-7{~8<-?zQ*oU3j6rkgWeTHvo*#mG`iAxmtdCPonkNo5q0MTJ4s?$rfh z*>X}>n2k`-RaR7R{eTL?1rZhzQT-9fN?W97mKFVxy?b|`FWiUcj_+MduQYW^y0sVt z``KvIon`Rtm+!=en&#tpUxu=+^;6qf@%g8=S9+ZPMcpcKL&TvnrV@+9hRwQoQsNmv zVsXsWjznA^$x#_miAJKsvM!!9El3ko6!*MHfe`CHz0ZO$#C`U1!{C2y*|z6x`;aOjxx26dIdIzex! zqsp3RdzU|=CsxDjB;ibbWSrDh!w#NX*iQzlp$0reUJr}RNL>|Zge+QjH&|NOy#$jQ zbt0^eYLNQZ*()oH13_xb+* zot@OyCP^(V@gLDAPvJ8N=?f61{X_6!vFXZHR4!ec@p`=>L*|=pm~>97ADLq@(3jJ& z(rhEUx=&`p-`UU_ zxTp*~Eg^^WTu#1I>GSvb&*%7hl*yh0sJG7_@CQyR|AJq`037fjz%0<+sgV3+P|p?d VReUd<(sPm|9T`|EH%ki({sVwsZ