shithub: pokecrystal

Download patch

ref: 17448c51a51bb3ddd20b0349ae274980638b0980
parent: 1de1bdbce73672dfa9cc3ddfce528dcb07ec253b
parent: 46bc3e4c883a5d73dc5b4abcfcaeb25f9eed0cdf
author: yenatch <yenatch@gmail.com>
date: Sat Sep 23 21:23:34 EDT 2017

Merge pull request #389 from yenatch/rgbds-3

rgbds 0.3.3

--- a/.travis.yml
+++ b/.travis.yml
@@ -2,9 +2,8 @@
 install:
   - |-
     path="$(pwd)"; cd;
-    wget https://github.com/rednex/rgbds/archive/v0.2.5.tar.gz -O rgbds.tar.gz && 
-    tar xf rgbds.tar.gz && 
-    cd rgbds-0.2.5 && 
+    git clone https://github.com/rednex/rgbds &&
+    cd rgbds &&
     sudo make install && 
     cd - && 
     rm -rf rgbds && 
--- a/Makefile
+++ b/Makefile
@@ -62,12 +62,14 @@
 	rgbasm -o $@ $<
 
 pokecrystal11.gbc: $(crystal11_obj)
-	rgblink -n pokecrystal11.sym -m pokecrystal11.map -o $@ $^
+	rgblink -n pokecrystal11.sym -m pokecrystal11.map -l pokecrystal.ld -o $@ $^
 	rgbfix -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -n 1 -p 0 -r 3 -t PM_CRYSTAL $@
+	sort pokecrystal11.sym -o pokecrystal11.sym
 
 pokecrystal.gbc: $(crystal_obj)
-	rgblink -n pokecrystal.sym -m pokecrystal.map -o $@ $^
+	rgblink -n pokecrystal.sym -m pokecrystal.map -l pokecrystal.ld -o $@ $^
 	rgbfix -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@
+	sort pokecrystal.sym -o pokecrystal.sym
 
 
 # For files that the compressor can't match, there will be a .lz file suffixed with the md5 hash of the correct uncompressed file.
--- a/audio.asm
+++ b/audio.asm
@@ -1,7 +1,7 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Audio", ROMX, BANK[AUDIO]
+SECTION "Audio", ROMX
 
 INCLUDE "audio/engine.asm"
 
@@ -21,7 +21,7 @@
 
 
 
-SECTION "Songs 1", ROMX, BANK[SONGS_1]
+SECTION "Songs 1", ROMX
 
 INCLUDE "audio/music/route36.asm"
 INCLUDE "audio/music/rivalbattle.asm"
@@ -40,7 +40,7 @@
 INCLUDE "audio/music/trainervictory.asm"
 
 
-SECTION "Songs 2", ROMX, BANK[SONGS_2]
+SECTION "Songs 2", ROMX
 
 INCLUDE "audio/music/route1.asm"
 INCLUDE "audio/music/route3.asm"
@@ -76,7 +76,7 @@
 INCLUDE "audio/music/route30.asm"
 
 
-SECTION "Songs 3", ROMX, BANK[SONGS_3]
+SECTION "Songs 3", ROMX
 
 INCLUDE "audio/music/violetcity.asm"
 INCLUDE "audio/music/route29.asm"
@@ -86,7 +86,7 @@
 INCLUDE "audio/music/printer.asm"
 
 
-SECTION "Songs 4", ROMX, BANK[SONGS_4]
+SECTION "Songs 4", ROMX
 
 INCLUDE "audio/music/viridiancity.asm"
 INCLUDE "audio/music/celadoncity.asm"
@@ -127,7 +127,7 @@
 INCLUDE "audio/music/bugcatchingcontest.asm"
 
 
-SECTION "Songs 5", ROMX, BANK[SONGS_5]
+SECTION "Songs 5", ROMX
 
 INCLUDE "audio/music/mobileadaptermenu.asm"
 INCLUDE "audio/music/buenaspassword.asm"
@@ -140,7 +140,7 @@
 
 
 
-SECTION "Extra Songs 1", ROMX, BANK[EXTRA_SONGS_1]
+SECTION "Extra Songs 1", ROMX
 
 INCLUDE "audio/music/credits.asm"
 INCLUDE "audio/music/clair.asm"
@@ -147,24 +147,24 @@
 INCLUDE "audio/music/mobileadapter.asm"
 
 
-SECTION "Extra Songs 2", ROMX, BANK[EXTRA_SONGS_2]
+SECTION "Extra Songs 2", ROMX
 
 INCLUDE "audio/music/postcredits.asm"
 
 
 
-SECTION "Sound Effects", ROMX, BANK[SOUND_EFFECTS]
+SECTION "Sound Effects", ROMX
 
 INCLUDE "audio/sfx.asm"
 
 
-SECTION "Crystal Sound Effects", ROMX, BANK[CRYSTAL_SOUND_EFFECTS]
+SECTION "Crystal Sound Effects", ROMX
 
 INCLUDE "audio/sfx_crystal.asm"
 
 
 
-SECTION "Cries", ROMX, BANK[CRIES]
+SECTION "Cries", ROMX
 
 CryHeaders:: INCLUDE "audio/cry_headers.asm"
 
--- a/data/egg_moves.asm
+++ b/data/egg_moves.asm
@@ -1,7 +1,7 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Egg Moves", ROMX, BANK[EGG_MOVES]
+SECTION "Egg Moves", ROMX
 
 ; All instances of Charm, Steel Wing, Sweet Scent, and Lovely Kiss were
 ; removed from egg move lists in Crystal, because they are also TMs.
--- a/data/evos_attacks.asm
+++ b/data/evos_attacks.asm
@@ -1,7 +1,7 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Evolutions and Attacks", ROMX, BANK[EVOS_ATTACKS]
+SECTION "Evolutions and Attacks", ROMX
 
 
 INCLUDE "data/evos_attacks_pointers.asm"
--- a/data/pokedex/entries.asm
+++ b/data/pokedex/entries.asm
@@ -1,25 +1,25 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Pokedex Entries 001-064", ROMX, BANK[POKEDEX_ENTRIES_1]
+SECTION "Pokedex Entries 001-064", ROMX
 
 PokedexEntries1::
 INCLUDE "data/pokedex/entries_1.asm"
 
 
-SECTION "Pokedex Entries 065-128", ROMX, BANK[POKEDEX_ENTRIES_2]
+SECTION "Pokedex Entries 065-128", ROMX
 
 PokedexEntries2::
 INCLUDE "data/pokedex/entries_2.asm"
 
 
-SECTION "Pokedex Entries 129-192", ROMX, BANK[POKEDEX_ENTRIES_3]
+SECTION "Pokedex Entries 129-192", ROMX
 
 PokedexEntries3::
 INCLUDE "data/pokedex/entries_3.asm"
 
 
-SECTION "Pokedex Entries 193-251", ROMX, BANK[POKEDEX_ENTRIES_4]
+SECTION "Pokedex Entries 193-251", ROMX
 
 PokedexEntries4::
 INCLUDE "data/pokedex/entries_4.asm"
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -1,6 +1,6 @@
 INCLUDE "includes.asm"
 
-SECTION "Credits", ROMX, BANK[CREDITS]
+SECTION "Credits", ROMX
 
 	const_def
 	const SATOSHI_TAJIRI
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -1,6 +1,6 @@
 INCLUDE "includes.asm"
 
-SECTION "Events", ROMX, BANK[EVENTS]
+SECTION "Events", ROMX
 
 OverworldLoop:: ; 966b0
 	xor a
--- a/engine/sprite_anims.asm
+++ b/engine/sprite_anims.asm
@@ -855,7 +855,7 @@
 	ret
 
 .AnonymousJumptable: ; 8d6c5 (23:56c5)
-	ld hl, [sp+$0]
+	ld hl, sp+$0
 	ld e, [hl]
 	inc hl
 	ld d, [hl]
--- a/gfx/pics.asm
+++ b/gfx/pics.asm
@@ -3,19 +3,19 @@
 
 ; Unown pic pointers are assumed to start at the same address in a different bank.
 
-SECTION "Pic Pointers", ROMX[$4000], BANK[PIC_POINTERS]
+SECTION "Pic Pointers", ROMX
 PicPointers:: INCLUDE "gfx/pics/pic_pointers.asm"
 
-SECTION "Unown Pic Pointers", ROMX[$4000], BANK[UNOWN_PIC_POINTERS]
+SECTION "Unown Pic Pointers", ROMX
 UnownPicPointers:: INCLUDE "gfx/pics/unown_pic_pointers.asm"
 
 
-SECTION "Trainer Pic Pointers", ROMX, BANK[TRAINER_PIC_POINTERS]
+SECTION "Trainer Pic Pointers", ROMX
 TrainerPicPointers:: INCLUDE "gfx/pics/trainer_pic_pointers.asm"
 
 
 
-SECTION "Pics 1", ROMX, BANK[PICS_1]
+SECTION "Pics 1", ROMX
 
 HoOhFrontpic:        INCBIN "gfx/pics/ho_oh/front.animated.2bpp.lz"
 MachampFrontpic:     INCBIN "gfx/pics/machamp/front.animated.2bpp.lz"
@@ -33,7 +33,7 @@
 ; 123ffa
 
 
-SECTION "Pics 2", ROMX, BANK[PICS_2]
+SECTION "Pics 2", ROMX
 
 BlastoiseFrontpic:   INCBIN "gfx/pics/blastoise/front.animated.2bpp.lz"
 RapidashFrontpic:    INCBIN "gfx/pics/rapidash/front.animated.2bpp.lz"
@@ -54,7 +54,7 @@
 ; 127ffe
 
 
-SECTION "Pics 3", ROMX, BANK[PICS_3]
+SECTION "Pics 3", ROMX
 
 SteelixFrontpic:     INCBIN "gfx/pics/steelix/front.animated.2bpp.lz"
 AlakazamFrontpic:    INCBIN "gfx/pics/alakazam/front.animated.2bpp.lz"
@@ -77,7 +77,7 @@
 ; 12bffe
 
 
-SECTION "Pics 4", ROMX, BANK[PICS_4]
+SECTION "Pics 4", ROMX
 
 DodrioFrontpic:      INCBIN "gfx/pics/dodrio/front.animated.2bpp.lz"
 SlowkingFrontpic:    INCBIN "gfx/pics/slowking/front.animated.2bpp.lz"
@@ -102,7 +102,7 @@
 ; 130000
 
 
-SECTION "Pics 5", ROMX, BANK[PICS_5]
+SECTION "Pics 5", ROMX
 
 GolbatFrontpic:      INCBIN "gfx/pics/golbat/front.animated.2bpp.lz"
 KinglerFrontpic:     INCBIN "gfx/pics/kingler/front.animated.2bpp.lz"
@@ -128,7 +128,7 @@
 ; 133fff
 
 
-SECTION "Pics 6", ROMX, BANK[PICS_6]
+SECTION "Pics 6", ROMX
 
 AriadosFrontpic:     INCBIN "gfx/pics/ariados/front.animated.2bpp.lz"
 NoctowlFrontpic:     INCBIN "gfx/pics/noctowl/front.animated.2bpp.lz"
@@ -156,7 +156,7 @@
 ; 137fff
 
 
-SECTION "Pics 7", ROMX, BANK[PICS_7]
+SECTION "Pics 7", ROMX
 
 VaporeonFrontpic:    INCBIN "gfx/pics/vaporeon/front.animated.2bpp.lz"
 GirafarigFrontpic:   INCBIN "gfx/pics/girafarig/front.animated.2bpp.lz"
@@ -186,7 +186,7 @@
 ; 13c000
 
 
-SECTION "Pics 8", ROMX, BANK[PICS_8]
+SECTION "Pics 8", ROMX
 
 SeelFrontpic:        INCBIN "gfx/pics/seel/front.animated.2bpp.lz"
 CrobatFrontpic:      INCBIN "gfx/pics/crobat/front.animated.2bpp.lz"
@@ -218,7 +218,7 @@
 ; 13fff7
 
 
-SECTION "Pics 9", ROMX, BANK[PICS_9]
+SECTION "Pics 9", ROMX
 
 EkansFrontpic:       INCBIN "gfx/pics/ekans/front.animated.2bpp.lz"
 SudowoodoFrontpic:   INCBIN "gfx/pics/sudowoodo/front.animated.2bpp.lz"
@@ -254,7 +254,7 @@
 ; 144000
 
 
-SECTION "Pics 10", ROMX, BANK[PICS_10]
+SECTION "Pics 10", ROMX
 
 MisdreavusFrontpic:  INCBIN "gfx/pics/misdreavus/front.animated.2bpp.lz"
 HoundourFrontpic:    INCBIN "gfx/pics/houndour/front.animated.2bpp.lz"
@@ -294,7 +294,7 @@
 ; 148000
 
 
-SECTION "Pics 11", ROMX, BANK[PICS_11]
+SECTION "Pics 11", ROMX
 
 DodrioBackpic:       INCBIN "gfx/pics/dodrio/back.2bpp.lz"
 ClefairyFrontpic:    INCBIN "gfx/pics/clefairy/front.animated.2bpp.lz"
@@ -337,7 +337,7 @@
 ; 14bffb
 
 
-SECTION "Pics 12", ROMX, BANK[PICS_12]
+SECTION "Pics 12", ROMX
 
 VenusaurBackpic:     INCBIN "gfx/pics/venusaur/back.2bpp.lz"
 MoltresBackpic:      INCBIN "gfx/pics/moltres/back.2bpp.lz"
@@ -383,7 +383,7 @@
 ; 150000
 
 
-SECTION "Pics 13", ROMX, BANK[PICS_13]
+SECTION "Pics 13", ROMX
 
 OmanyteBackpic:      INCBIN "gfx/pics/omanyte/back.2bpp.lz"
 PidgeyBackpic:       INCBIN "gfx/pics/pidgey/back.2bpp.lz"
@@ -431,7 +431,7 @@
 ; 153fe3
 
 
-SECTION "Pics 14", ROMX, BANK[PICS_14]
+SECTION "Pics 14", ROMX
 
 SudowoodoBackpic:    INCBIN "gfx/pics/sudowoodo/back.2bpp.lz"
 FlaaffyBackpic:      INCBIN "gfx/pics/flaaffy/back.2bpp.lz"
@@ -482,7 +482,7 @@
 ; 158000
 
 
-SECTION "Pics 15", ROMX, BANK[PICS_15]
+SECTION "Pics 15", ROMX
 
 MewtwoBackpic:       INCBIN "gfx/pics/mewtwo/back.2bpp.lz"
 PokemonProfPic:      INCBIN "gfx/trainers/oak.2bpp.lz"
@@ -536,7 +536,7 @@
 ; 15bffa
 
 
-SECTION "Pics 16", ROMX, BANK[PICS_16]
+SECTION "Pics 16", ROMX
 
 HoothootBackpic:     INCBIN "gfx/pics/hoothoot/back.2bpp.lz"
 NoctowlBackpic:      INCBIN "gfx/pics/noctowl/back.2bpp.lz"
@@ -594,7 +594,7 @@
 ; 15ffff
 
 
-SECTION "Pics 17", ROMX, BANK[PICS_17]
+SECTION "Pics 17", ROMX
 
 ParasBackpic:        INCBIN "gfx/pics/paras/back.2bpp.lz"
 VaporeonBackpic:     INCBIN "gfx/pics/vaporeon/back.2bpp.lz"
@@ -660,7 +660,7 @@
 ; 163ffc
 
 
-SECTION "Pics 18", ROMX, BANK[PICS_18]
+SECTION "Pics 18", ROMX
 
 SpinarakBackpic:     INCBIN "gfx/pics/spinarak/back.2bpp.lz"
 RaikouBackpic:       INCBIN "gfx/pics/raikou/back.2bpp.lz"
@@ -725,7 +725,7 @@
 ; 1669d3
 
 
-SECTION "Pics 19", ROMX, BANK[PICS_19]
+SECTION "Pics 19", ROMX
 
 ; Seems to be an accidental copy of the previous bank
 
--- a/home.asm
+++ b/home.asm
@@ -1,18 +1,18 @@
 INCLUDE "includes.asm"
 
-SECTION "NULL", ROM0[0]
+SECTION "NULL", ROM0
 NULL::
 
 INCLUDE "rst.asm"
 INCLUDE "interrupts.asm"
 
-SECTION "Header", ROM0[$100]
+SECTION "Header", ROM0
 
 Start::
 	nop
 	jp _Start
 
-SECTION "Home", ROM0[$150]
+SECTION "Home", ROM0
 
 INCLUDE "home/init.asm"
 INCLUDE "home/vblank.asm"
--- a/interrupts.asm
+++ b/interrupts.asm
@@ -1,16 +1,16 @@
 ; Game Boy hardware interrupts
 
-SECTION "vblank",ROM0[$40]
+SECTION "vblank",ROM0
 	jp VBlank
 
-SECTION "lcd",ROM0[$48]
+SECTION "lcd",ROM0
 	jp LCD
 
-SECTION "timer",ROM0[$50]
+SECTION "timer",ROM0
 	jp Timer
 
-SECTION "serial",ROM0[$58]
+SECTION "serial",ROM0
 	jp Serial
 
-SECTION "joypad",ROM0[$60]
+SECTION "joypad",ROM0
 	jp JoypadInt
--- a/main.asm
+++ b/main.asm
@@ -1,6 +1,6 @@
 INCLUDE "includes.asm"
 
-SECTION "bank1", ROMX, BANK[$1]
+SECTION "bank1", ROMX
 
 PlaceWaitingText:: ; 4000
 	hlcoord 3, 10
@@ -246,7 +246,7 @@
 ; not used
 	ret
 
-SECTION "bank2", ROMX, BANK[$2]
+SECTION "bank2", ROMX
 
 INCLUDE "engine/player_object.asm"
 INCLUDE "engine/sine.asm"
@@ -253,7 +253,7 @@
 INCLUDE "engine/predef.asm"
 INCLUDE "engine/color.asm"
 
-SECTION "bank3", ROMX, BANK[$3]
+SECTION "bank3", ROMX
 
 CheckTime:: ; c000
 	ld a, [TimeOfDay]
@@ -380,7 +380,7 @@
 	text_jump UnknownText_0x1c5ea8
 	db "@"
 
-SECTION "bank4", ROMX, BANK[$4]
+SECTION "bank4", ROMX
 
 INCLUDE "engine/pack.asm"
 INCLUDE "engine/time.asm"
@@ -603,7 +603,7 @@
 root	set root+1
 	endr
 
-SECTION "bank5", ROMX, BANK[$5]
+SECTION "bank5", ROMX
 
 INCLUDE "engine/rtc.asm"
 INCLUDE "engine/overworld.asm"
@@ -620,27 +620,27 @@
 INCLUDE "event/photo.asm"
 INCLUDE "engine/breeding/egg.asm"
 
-SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1]
+SECTION "Tileset Data 1", ROMX
 
 INCLUDE "tilesets/data_1.asm"
 
-SECTION "Roofs", ROMX, BANK[ROOFS]
+SECTION "Roofs", ROMX
 
 INCLUDE "tilesets/roofs.asm"
 
-SECTION "Tileset Data 2", ROMX, BANK[TILESETS_2]
+SECTION "Tileset Data 2", ROMX
 
 INCLUDE "tilesets/data_2.asm"
 
-SECTION "bank8", ROMX, BANK[$8]
+SECTION "bank8", ROMX
 
 INCLUDE "engine/clock_reset.asm"
 
-SECTION "Tileset Data 3", ROMX, BANK[TILESETS_3]
+SECTION "Tileset Data 3", ROMX
 
 INCLUDE "tilesets/data_3.asm"
 
-SECTION "bank9", ROMX, BANK[$9]
+SECTION "bank9", ROMX
 
 StringBufferPointers:: ; 24000
 	dw StringBuffer3
@@ -1159,7 +1159,7 @@
 	ld b, a
 	ret
 
-SECTION "bankA", ROMX, BANK[$A]
+SECTION "bankA", ROMX
 
 INCLUDE "engine/link.asm"
 
@@ -1183,7 +1183,7 @@
 DudeBackpic: ; 2bbaa
 INCBIN "gfx/misc/dude.2bpp.lz"
 
-SECTION "bankB", ROMX, BANK[$B]
+SECTION "bankB", ROMX
 
 INCLUDE "battle/trainer_huds.asm"
 
@@ -1618,15 +1618,15 @@
 	jr nz, .x2
 	ret
 
-SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4]
+SECTION "Tileset Data 4", ROMX
 
 INCLUDE "tilesets/data_4.asm"
 
-SECTION "Effect Commands", ROMX, BANK[$D]
+SECTION "Effect Commands", ROMX
 
 INCLUDE "battle/effect_commands.asm"
 
-SECTION "Enemy Trainers", ROMX, BANK[$E]
+SECTION "Enemy Trainers", ROMX
 
 INCLUDE "battle/ai/items.asm"
 
@@ -1706,13 +1706,13 @@
 
 INCLUDE "trainers/trainers.asm"
 
-SECTION "Battle Core", ROMX, BANK[$F]
+SECTION "Battle Core", ROMX
 
 INCLUDE "battle/core.asm"
 
 INCLUDE "battle/effect_command_pointers.asm"
 
-SECTION "bank10", ROMX, BANK[$10]
+SECTION "bank10", ROMX
 
 INCLUDE "engine/pokedex.asm"
 
@@ -1720,7 +1720,7 @@
 
 INCLUDE "engine/evolve.asm"
 
-SECTION "bank11", ROMX, BANK[$11]
+SECTION "bank11", ROMX
 
 INCLUDE "engine/fruit_trees.asm"
 
@@ -1852,7 +1852,7 @@
 	jr z, .skip_height
 	push hl
 	push de
-	ld hl, [sp+$0]
+	ld hl, sp+$0
 	ld d, h
 	ld e, l
 	hlcoord 12, 7
@@ -1876,7 +1876,7 @@
 	or d
 	jr z, .skip_weight
 	push de
-	ld hl, [sp+$0]
+	ld hl, sp+$0
 	ld d, h
 	ld e, l
 	hlcoord 11, 9
@@ -1946,7 +1946,7 @@
 
 INCLUDE "engine/mail.asm"
 
-SECTION "Crystal Unique", ROMX, BANK[$12]
+SECTION "Crystal Unique", ROMX
 
 INCLUDE "engine/init_gender.asm"
 
@@ -2153,7 +2153,7 @@
 	ld [hOAMUpdate], a
 	ret
 
-SECTION "bank13", ROMX, BANK[$13]
+SECTION "bank13", ROMX
 
 SwapTextboxPalettes:: ; 4c000
 	hlcoord 0, 0
@@ -3538,7 +3538,7 @@
 
 INCLUDE "event/poke_seer.asm"
 
-SECTION "bank14", ROMX, BANK[$14]
+SECTION "bank14", ROMX
 
 INCLUDE "engine/party_menu.asm"
 INCLUDE "event/poisonstep.asm"
@@ -4666,11 +4666,11 @@
 ; Another egg pic. This is shifted up a few pixels.
 INCBIN "gfx/misc/unknown_egg.2bpp.lz"
 
-SECTION "bank19", ROMX, BANK[$19]
+SECTION "bank19", ROMX
 
 INCLUDE "text/phone/extra.asm"
 
-SECTION "bank20", ROMX, BANK[$20]
+SECTION "bank20", ROMX
 
 INCLUDE "engine/player_movement.asm"
 
@@ -4683,7 +4683,7 @@
 
 INCLUDE "engine/debug.asm"
 
-SECTION "bank21", ROMX, BANK[$21]
+SECTION "bank21", ROMX
 
 INCLUDE "engine/printer.asm"
 
@@ -4691,7 +4691,7 @@
 
 INCLUDE "event/halloffame.asm"
 
-SECTION "bank22", ROMX, BANK[$22]
+SECTION "bank22", ROMX
 
 INCLUDE "event/kurt.asm"
 
@@ -4969,7 +4969,7 @@
 INCLUDE "event/battle_tower.asm"
 INCLUDE "misc/mobile_22_2.asm"
 
-SECTION "bank23", ROMX, BANK[$23]
+SECTION "bank23", ROMX
 
 Predef35: ; 8c000
 Predef36:
@@ -4998,7 +4998,7 @@
 
 INCLUDE "engine/mon_icons.asm"
 
-SECTION "bank24", ROMX, BANK[$24]
+SECTION "bank24", ROMX
 
 INCLUDE "engine/phone.asm"
 INCLUDE "engine/timeset.asm"
@@ -5007,12 +5007,12 @@
 INCLUDE "engine/fish.asm"
 INCLUDE "engine/slot_machine.asm"
 
-SECTION "Phone Engine", ROMX, BANK[$28]
+SECTION "Phone Engine", ROMX
 
 INCLUDE "engine/more_phone_scripts.asm"
 INCLUDE "engine/buena_phone_scripts.asm"
 
-SECTION "Phone Text", ROMX, BANK[$29]
+SECTION "Phone Text", ROMX
 
 INCLUDE "text/phone/anthony_overworld.asm"
 INCLUDE "text/phone/todd_overworld.asm"
@@ -5032,11 +5032,11 @@
 INCLUDE "text/phone/parry_overworld.asm"
 INCLUDE "text/phone/erin_overworld.asm"
 
-SECTION "Tileset Data 5", ROMX, BANK[TILESETS_5]
+SECTION "Tileset Data 5", ROMX
 
 INCLUDE "tilesets/data_5.asm"
 
-SECTION "bank2E", ROMX, BANK[$2E]
+SECTION "bank2E", ROMX
 
 INCLUDE "engine/events_3.asm"
 
@@ -5044,7 +5044,7 @@
 
 INCLUDE "gfx/mail.asm"
 
-SECTION "bank2F", ROMX, BANK[$2F]
+SECTION "bank2F", ROMX
 
 INCLUDE "engine/std_scripts.asm"
 
@@ -5082,15 +5082,15 @@
 AlreadyBeatenTrainerScript:
 	scripttalkafter
 
-SECTION "bank30", ROMX, BANK[$30]
+SECTION "bank30", ROMX
 
 INCLUDE "gfx/overworld/sprites_1.asm"
 
-SECTION "bank31", ROMX, BANK[$31]
+SECTION "bank31", ROMX
 
 INCLUDE "gfx/overworld/sprites_2.asm"
 
-SECTION "bank32", ROMX, BANK[$32]
+SECTION "bank32", ROMX
 
 INCLUDE "battle/bg_effects.asm"
 
@@ -5148,7 +5148,7 @@
 TheEndGFX:: ; cbd2e
 INCBIN "gfx/credits/theend.2bpp"
 
-SECTION "bank33", ROMX, BANK[$33]
+SECTION "bank33", ROMX
 
 DisplayCaughtContestMonStats: ; cc000
 
@@ -5263,7 +5263,7 @@
 
 INCLUDE "battle/anim_objects.asm"
 
-SECTION "Pic Animations 1", ROMX, BANK[$34]
+SECTION "Pic Animations 1", ROMX
 
 INCLUDE "gfx/pics/animation.asm"
 
@@ -5303,26 +5303,26 @@
 INCLUDE "gfx/pics/unown_bitmask_pointers.asm"
 INCLUDE "gfx/pics/unown_bitmasks.asm"
 
-SECTION "Pic Animations 2", ROMX, BANK[$35]
+SECTION "Pic Animations 2", ROMX
 
 INCLUDE "gfx/pics/frame_pointers.asm"
 INCLUDE "gfx/pics/kanto_frames.asm"
 
-SECTION "bank36", ROMX, BANK[$36]
+SECTION "bank36", ROMX
 
 FontInversed: INCBIN "gfx/misc/font_inversed.1bpp"
 
-SECTION "Pic Animations 3", ROMX, BANK[$36]
+SECTION "Pic Animations 3", ROMX
 
 INCLUDE "gfx/pics/johto_frames.asm"
 INCLUDE "gfx/pics/unown_frame_pointers.asm"
 INCLUDE "gfx/pics/unown_frames.asm"
 
-SECTION "Tileset Data 6", ROMX, BANK[TILESETS_6]
+SECTION "Tileset Data 6", ROMX
 
 INCLUDE "tilesets/data_6.asm"
 
-SECTION "bank38", ROMX, BANK[$38]
+SECTION "bank38", ROMX
 
 RotateUnownFrontpic: ; e0000
 ; something to do with Unown printer
@@ -5449,7 +5449,7 @@
 INCLUDE "engine/dummy_game.asm"
 INCLUDE "engine/billspc.asm"
 
-SECTION "bank39", ROMX, BANK[$39]
+SECTION "bank39", ROMX
 
 CopyrightGFX:: ; e4000
 INCBIN "gfx/misc/copyright.2bpp"
@@ -5457,7 +5457,7 @@
 INCLUDE "engine/options_menu.asm"
 INCLUDE "engine/crystal_intro.asm"
 
-SECTION "bank3E", ROMX, BANK[$3E]
+SECTION "bank3E", ROMX
 
 INCLUDE "gfx/font.asm"
 INCLUDE "engine/time_capsule/conversion.asm"
@@ -5468,7 +5468,7 @@
 
 INCLUDE "battle/misc.asm"
 
-SECTION "bank3F", ROMX, BANK[$3F]
+SECTION "bank3F", ROMX
 
 INCLUDE "tilesets/animations.asm"
 
@@ -5476,11 +5476,11 @@
 
 INCLUDE "event/mom_phone.asm"
 
-SECTION "bank40", ROMX, BANK[$40]
+SECTION "bank40", ROMX
 
 INCLUDE "misc/mobile_40.asm"
 
-SECTION "bank41", ROMX, BANK[$41]
+SECTION "bank41", ROMX
 
 INCLUDE "misc/gfx_41.asm"
 
@@ -5492,11 +5492,11 @@
 
 INCLUDE "misc/mobile_41.asm"
 
-SECTION "bank42", ROMX, BANK[$42]
+SECTION "bank42", ROMX
 
 INCLUDE "misc/mobile_42.asm"
 
-SECTION "Intro Logo", ROMX, BANK[$42]
+SECTION "Intro Logo", ROMX
 
 IntroLogoGFX: ; 109407
 INCBIN "gfx/intro/logo.2bpp.lz"
@@ -5508,24 +5508,24 @@
 INCLUDE "misc/mobile_45.asm"
 INCLUDE "misc/mobile_46.asm"
 
-SECTION "bank47", ROMX, BANK[$47]
+SECTION "bank47", ROMX
 
 INCLUDE "misc/battle_tower_47.asm"
 
-SECTION "bank5B", ROMX, BANK[$5B]
+SECTION "bank5B", ROMX
 
 INCLUDE "misc/mobile_5b.asm"
 INCLUDE "engine/link_trade.asm"
 
-SECTION "bank5C", ROMX, BANK[$5C]
+SECTION "bank5C", ROMX
 
 INCLUDE "misc/mobile_5c.asm"
 
-SECTION "bank5D", ROMX, BANK[$5D]
+SECTION "bank5D", ROMX
 
 INCLUDE "text/phone/extra3.asm"
 
-SECTION "bank5E", ROMX, BANK[$5E]
+SECTION "bank5E", ROMX
 
 _UpdateBattleHUDs:
 	callba DrawPlayerHUD
@@ -5539,7 +5539,7 @@
 
 INCLUDE "misc/mobile_5f.asm"
 
-SECTION "Common Text 1", ROMX, BANK[$6C]
+SECTION "Common Text 1", ROMX
 
 INCLUDE "text/stdtext.asm"
 INCLUDE "text/phone/jack_overworld.asm"
@@ -5554,7 +5554,7 @@
 INCLUDE "text/phone/ralph_overworld.asm"
 INCLUDE "text/phone/liz_overworld.asm"
 
-SECTION "bank6D", ROMX, BANK[$6D]
+SECTION "bank6D", ROMX
 
 INCLUDE "text/phone/mom.asm"
 INCLUDE "text/phone/bill.asm"
@@ -5561,7 +5561,7 @@
 INCLUDE "text/phone/elm.asm"
 INCLUDE "text/phone/trainers1.asm"
 
-SECTION "bank72", ROMX, BANK[$72]
+SECTION "bank72", ROMX
 
 ItemNames::
 INCLUDE "items/item_names.asm"
@@ -5573,7 +5573,7 @@
 
 INCLUDE "engine/landmarks.asm"
 
-SECTION "bank77", ROMX, BANK[$77]
+SECTION "bank77", ROMX
 
 UnownFont: ; 1dc000
 INCBIN "gfx/misc/unown_font.2bpp"
@@ -5586,11 +5586,11 @@
 MobileLvIcon: ; 1dc599
 INCBIN "gfx/mobile/lv.1bpp"
 
-SECTION "Tileset Data 7", ROMX, BANK[TILESETS_7]
+SECTION "Tileset Data 7", ROMX
 
 INCLUDE "tilesets/data_7.asm"
 
-SECTION "bank77_2", ROMX, BANK[$77]
+SECTION "bank77_2", ROMX
 
 Function1dd6a9: ; 1dd6a9
 ; XXX
@@ -5599,7 +5599,7 @@
 	ld c, a
 	push bc
 	push de
-	ld hl, [sp+$2]
+	ld hl, sp+$2
 	ld d, h
 	ld e, l
 	pop hl
@@ -5625,7 +5625,7 @@
 	ld b, a
 ; Crazy stuff happening with the stack
 	push bc
-	ld hl, [sp+$1]
+	ld hl, sp+$1
 	push de
 	push hl
 	pop de
@@ -5637,7 +5637,7 @@
 	inc hl
 	ld d, h
 	ld e, l
-	ld hl, [sp+$0]
+	ld hl, sp+$0
 	push de
 	push hl
 	pop de
@@ -6021,19 +6021,19 @@
 	jr nz, .loop
 	ret
 
-SECTION "Tileset Data 8", ROMX, BANK[TILESETS_8]
+SECTION "Tileset Data 8", ROMX
 
 INCLUDE "tilesets/data_8.asm"
 
-SECTION "bank7B", ROMX, BANK[$7B]
+SECTION "bank7B", ROMX
 
 INCLUDE "text/battle_tower.asm"
 
-SECTION "bank7C", ROMX, BANK[$7C]
+SECTION "bank7C", ROMX
 
 INCLUDE "data/battle_tower_2.asm"
 
-SECTION "bank7D", ROMX, BANK[$7D]
+SECTION "bank7D", ROMX
 
 	db $cc, $6b, $1e ; XXX
 
@@ -6078,14 +6078,14 @@
 .unknown_data
 INCBIN "unknown/1f5db4.bin"
 
-SECTION "bank7E", ROMX, BANK[$7E]
+SECTION "bank7E", ROMX
 
 INCLUDE "data/battle_tower.asm"
 INCLUDE "data/odd_eggs.asm"
 
-SECTION "bank7F", ROMX, BANK[$7F]
+SECTION "bank7F", ROMX
 
-SECTION "stadium2", ROMX[$8000-$220], BANK[$7F]
+SECTION "stadium2", ROMX
 
 IF DEF(CRYSTAL11)
 INCBIN "misc/stadium2_2.bin"
--- a/maps.asm
+++ b/maps.asm
@@ -1,7 +1,7 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Map Headers", ROMX, BANK[MAP_HEADERS]
+SECTION "Map Headers", ROMX
 
 INCLUDE "maps/map_headers.asm"
 INCLUDE "maps/second_map_headers.asm"
@@ -8,23 +8,23 @@
 
 
 
-SECTION "Map Blockdata 1", ROMX, BANK[MAPS_1]
+SECTION "Map Blockdata 1", ROMX
 
 INCLUDE "maps/blockdata_1.asm"
 
 
-SECTION "Map Blockdata 2", ROMX, BANK[MAPS_2]
+SECTION "Map Blockdata 2", ROMX
 
 INCLUDE "maps/blockdata_2.asm"
 
 
-SECTION "Map Blockdata 3", ROMX, BANK[MAPS_3]
+SECTION "Map Blockdata 3", ROMX
 
 INCLUDE "maps/blockdata_3.asm"
 
 
 
-SECTION "Map Scripts 1", ROMX, BANK[MAP_SCRIPTS_1]
+SECTION "Map Scripts 1", ROMX
 
 INCLUDE "maps/GoldenrodGym.asm"
 INCLUDE "maps/GoldenrodBikeShop.asm"
@@ -45,7 +45,7 @@
 INCLUDE "maps/GoldenrodGameCorner.asm"
 
 
-SECTION "Map Scripts 2", ROMX, BANK[MAP_SCRIPTS_2]
+SECTION "Map Scripts 2", ROMX
 
 INCLUDE "maps/RuinsofAlphOutside.asm"
 INCLUDE "maps/RuinsofAlphHoOhChamber.asm"
@@ -73,7 +73,7 @@
 INCLUDE "maps/OlivineLighthouse4F.asm"
 
 
-SECTION "Map Scripts 3", ROMX, BANK[MAP_SCRIPTS_3]
+SECTION "Map Scripts 3", ROMX
 
 INCLUDE "maps/NationalPark.asm"
 INCLUDE "maps/NationalParkBugContest.asm"
@@ -83,7 +83,7 @@
 INCLUDE "maps/RadioTower4F.asm"
 
 
-SECTION "Map Scripts 4", ROMX, BANK[MAP_SCRIPTS_4]
+SECTION "Map Scripts 4", ROMX
 
 INCLUDE "maps/RadioTower5F.asm"
 INCLUDE "maps/OlivineLighthouse5F.asm"
@@ -95,7 +95,7 @@
 INCLUDE "maps/DayCare.asm"
 
 
-SECTION "Map Scripts 5", ROMX, BANK[MAP_SCRIPTS_5]
+SECTION "Map Scripts 5", ROMX
 
 INCLUDE "maps/Route11.asm"
 INCLUDE "maps/VioletMart.asm"
@@ -112,7 +112,7 @@
 INCLUDE "maps/Route36NationalParkgate.asm"
 
 
-SECTION "Map Scripts 6", ROMX, BANK[MAP_SCRIPTS_6]
+SECTION "Map Scripts 6", ROMX
 
 INCLUDE "maps/Route8.asm"
 INCLUDE "maps/MahoganyMart1F.asm"
@@ -122,7 +122,7 @@
 INCLUDE "maps/IlexForest.asm"
 
 
-SECTION "Map Scripts 7", ROMX, BANK[MAP_SCRIPTS_7]
+SECTION "Map Scripts 7", ROMX
 
 INCLUDE "maps/LakeofRage.asm"
 INCLUDE "maps/CeladonDeptStore1F.asm"
@@ -149,7 +149,7 @@
 INCLUDE "maps/Route1718Gate.asm"
 
 
-SECTION "Map Scripts 8", ROMX, BANK[MAP_SCRIPTS_8]
+SECTION "Map Scripts 8", ROMX
 
 INCLUDE "maps/DiglettsCave.asm"
 INCLUDE "maps/MountMoon.asm"
@@ -173,7 +173,7 @@
 INCLUDE "maps/TinTowerRoof.asm"
 
 
-SECTION "Map Scripts 9", ROMX, BANK[MAP_SCRIPTS_9]
+SECTION "Map Scripts 9", ROMX
 
 INCLUDE "maps/Route34.asm"
 INCLUDE "maps/ElmsLab.asm"
@@ -187,7 +187,7 @@
 INCLUDE "maps/Route2946Gate.asm"
 
 
-SECTION "Map Scripts 10", ROMX, BANK[MAP_SCRIPTS_10]
+SECTION "Map Scripts 10", ROMX
 
 INCLUDE "maps/Route22.asm"
 INCLUDE "maps/WarehouseEntrance.asm"
@@ -215,7 +215,7 @@
 INCLUDE "maps/Route12SuperRodHouse.asm"
 
 
-SECTION "Map Scripts 11", ROMX, BANK[MAP_SCRIPTS_11]
+SECTION "Map Scripts 11", ROMX
 
 INCLUDE "maps/EcruteakHouse.asm"
 INCLUDE "maps/WiseTriosRoom.asm"
@@ -237,7 +237,7 @@
 INCLUDE "maps/VictoryRoadGate.asm"
 
 
-SECTION "Map Scripts 12", ROMX, BANK[MAP_SCRIPTS_12]
+SECTION "Map Scripts 12", ROMX
 
 INCLUDE "maps/OlivinePokeCenter1F.asm"
 INCLUDE "maps/OlivineGym.asm"
@@ -265,7 +265,7 @@
 INCLUDE "maps/BattleTowerOutside.asm"
 
 
-SECTION "Map Scripts 13", ROMX, BANK[MAP_SCRIPTS_13]
+SECTION "Map Scripts 13", ROMX
 
 INCLUDE "maps/IndigoPlateauPokeCenter1F.asm"
 INCLUDE "maps/WillsRoom.asm"
@@ -276,7 +276,7 @@
 INCLUDE "maps/HallOfFame.asm"
 
 
-SECTION "Map Scripts 14", ROMX, BANK[MAP_SCRIPTS_14]
+SECTION "Map Scripts 14", ROMX
 
 INCLUDE "maps/CeruleanCity.asm"
 INCLUDE "maps/SproutTower1F.asm"
@@ -295,7 +295,7 @@
 INCLUDE "maps/BurnedTowerB1F.asm"
 
 
-SECTION "Map Scripts 15", ROMX, BANK[MAP_SCRIPTS_15]
+SECTION "Map Scripts 15", ROMX
 
 INCLUDE "maps/CeruleanGymBadgeSpeechHouse.asm"
 INCLUDE "maps/CeruleanPoliceStation.asm"
@@ -323,7 +323,7 @@
 INCLUDE "maps/Route5CleanseTagSpeechHouse.asm"
 
 
-SECTION "Map Scripts 16", ROMX, BANK[MAP_SCRIPTS_16]
+SECTION "Map Scripts 16", ROMX
 
 INCLUDE "maps/PewterCity.asm"
 INCLUDE "maps/WhirlIslandNW.asm"
@@ -351,7 +351,7 @@
 INCLUDE "maps/AzaleaGym.asm"
 
 
-SECTION "Map Scripts 17", ROMX, BANK[MAP_SCRIPTS_17]
+SECTION "Map Scripts 17", ROMX
 
 INCLUDE "maps/MahoganyTown.asm"
 INCLUDE "maps/Route32.asm"
@@ -373,7 +373,7 @@
 INCLUDE "maps/MobileBattleRoom.asm"
 
 
-SECTION "Map Scripts 18", ROMX, BANK[MAP_SCRIPTS_18]
+SECTION "Map Scripts 18", ROMX
 
 INCLUDE "maps/Route36.asm"
 INCLUDE "maps/FuchsiaCity.asm"
@@ -402,7 +402,7 @@
 INCLUDE "maps/Route31VioletGate.asm"
 
 
-SECTION "Map Scripts 19", ROMX, BANK[MAP_SCRIPTS_19]
+SECTION "Map Scripts 19", ROMX
 
 INCLUDE "maps/AzaleaTown.asm"
 INCLUDE "maps/GoldenrodCity.asm"
@@ -421,7 +421,7 @@
 INCLUDE "maps/OaksLab.asm"
 
 
-SECTION "Map Scripts 20", ROMX, BANK[MAP_SCRIPTS_20]
+SECTION "Map Scripts 20", ROMX
 
 INCLUDE "maps/CherrygroveCity.asm"
 INCLUDE "maps/Route35.asm"
@@ -432,7 +432,7 @@
 INCLUDE "maps/Route25.asm"
 
 
-SECTION "Map Scripts 21", ROMX, BANK[MAP_SCRIPTS_21]
+SECTION "Map Scripts 21", ROMX
 
 INCLUDE "maps/CianwoodCity.asm"
 INCLUDE "maps/Route27.asm"
@@ -448,7 +448,7 @@
 INCLUDE "maps/PewterSnoozeSpeechHouse.asm"
 
 
-SECTION "Map Scripts 22", ROMX, BANK[MAP_SCRIPTS_22]
+SECTION "Map Scripts 22", ROMX
 
 INCLUDE "maps/EcruteakCity.asm"
 INCLUDE "maps/BlackthornCity.asm"
@@ -461,7 +461,7 @@
 INCLUDE "maps/Route12.asm"
 
 
-SECTION "Map Scripts 23", ROMX, BANK[MAP_SCRIPTS_23]
+SECTION "Map Scripts 23", ROMX
 
 INCLUDE "maps/NewBarkTown.asm"
 INCLUDE "maps/VioletCity.asm"
@@ -480,7 +480,7 @@
 INCLUDE "maps/SeafoamGym.asm"
 
 
-SECTION "Map Scripts 24", ROMX, BANK[MAP_SCRIPTS_24]
+SECTION "Map Scripts 24", ROMX
 
 INCLUDE "maps/Route33.asm"
 INCLUDE "maps/Route2.asm"
@@ -506,7 +506,7 @@
 INCLUDE "maps/Route28FamousSpeechHouse.asm"
 
 
-SECTION "Map Scripts 25", ROMX, BANK[MAP_SCRIPTS_25]
+SECTION "Map Scripts 25", ROMX
 
 INCLUDE "maps/SilverCaveOutside.asm"
 INCLUDE "maps/Route10North.asm"
--- a/misc/crystal_misc.asm
+++ b/misc/crystal_misc.asm
@@ -1,7 +1,7 @@
 INCLUDE "includes.asm"
 
 
-SECTION "Misc Crystal", ROMX, BANK[MISC_CRYSTAL]
+SECTION "Misc Crystal", ROMX
 
 MobileAdapterGFX::
 INCBIN "gfx/misc/mobile_adapter.2bpp"
--- a/misc/mobile_40.asm
+++ b/misc/mobile_40.asm
@@ -1784,7 +1784,7 @@
 ; 100b0a
 
 
-SECTION "tetsuji", ROMX, BANK[$40]
+SECTION "tetsuji", ROMX
 
 	charmap " ", $20 ; revert to ascii
 
@@ -1793,7 +1793,7 @@
 ; 100b12
 
 
-SECTION "bank40_2", ROMX, BANK[$40]
+SECTION "bank40_2", ROMX
 
 Function100b12: ; 100b12
 	call Function100dd8
@@ -3831,7 +3831,7 @@
 ; 10186f
 
 
-SECTION "ascii 10186f", ROMX, BANK[$40]
+SECTION "ascii 10186f", ROMX
 
 	charmap " ", $20 ; revert to ascii
 
@@ -3852,7 +3852,7 @@
 ; 1018a8
 
 
-SECTION "bank40_3", ROMX, BANK[$40]
+SECTION "bank40_3", ROMX
 
 Function1018a8: ; 1018a8
 	ld hl, wccb5
--- a/misc/mobile_41.asm
+++ b/misc/mobile_41.asm
@@ -1,4 +1,4 @@
-SECTION "bank41_2", ROMX, BANK[$41]
+SECTION "bank41_2", ROMX
 
 ; These functions deal with miscellaneous statistics
 ; which were used for Trainer Rankings in Pokémon News.
--- a/misc/mobile_45.asm
+++ b/misc/mobile_45.asm
@@ -1,5 +1,5 @@
 
-SECTION "bank45", ROMX, BANK[$45]
+SECTION "bank45", ROMX
 
 	charmap " ", $20 ; revert to ascii
 
@@ -6835,7 +6835,7 @@
 ; 117656
 
 
-SECTION "Mobile Stadium", ROMX, BANK[$45]
+SECTION "Mobile Stadium", ROMX
 
 Special_GiveOddEgg: ; 117656
 	callba GiveOddEgg
--- a/misc/mobile_46.asm
+++ b/misc/mobile_46.asm
@@ -1,4 +1,4 @@
-SECTION "bank46", ROMX, BANK[$46]
+SECTION "bank46", ROMX
 
 Function118000: ; 118000
 	ld a, $1
@@ -3014,7 +3014,7 @@
 	db "Sun"
 ; 1196cd
 
-SECTION "bank46_2", ROMX, BANK[$46]
+SECTION "bank46_2", ROMX
 ; A hack to use ascii above.
 
 Function1196cd: ; 1196cd (46:56cd)
--- a/misc/mobile_5f.asm
+++ b/misc/mobile_5f.asm
@@ -1,5 +1,5 @@
 
-SECTION "bank5F", ROMX, BANK[$5F]
+SECTION "bank5F", ROMX
 
 Function17c000: ; 17c000
 
--- a/misc/unused_title.asm
+++ b/misc/unused_title.asm
@@ -1,5 +1,5 @@
 
-SECTION "bank43", ROMX, BANK[$43]
+SECTION "bank43", ROMX
 
 UnusedTitleScreen: ; 10c000
 
--- /dev/null
+++ b/pokecrystal.ld
@@ -1,0 +1,357 @@
+ROM0
+	org $0000
+	"NULL"
+	"rst0"
+	org $0008
+	"rst8"
+	org $0010
+	"rst10"
+	org $0018
+	"rst18"
+	org $0020
+	"rst20"
+	org $0028
+	"rst28"
+	org $0038
+	"rst38"
+	org $0040
+	"vblank"
+	org $0048
+	"lcd"
+	org $0050
+	"timer"
+	org $0058
+	"serial"
+	org $0060
+	"joypad"
+	org $0100
+	"Header"
+	org $0150
+	"Home"
+ROMX $01
+	"bank1"
+ROMX $02
+	"bank2"
+ROMX $03
+	"bank3"
+ROMX $04
+	"bank4"
+ROMX $05
+	"bank5"
+ROMX $06
+	"Tileset Data 1"
+ROMX $07
+	"Roofs"
+	"Tileset Data 2"
+	"Extra Songs 1"
+ROMX $08
+	"bank8"
+	"Tileset Data 3"
+	"Egg Moves"
+ROMX $09
+	"bank9"
+ROMX $0a
+	"bankA"
+ROMX $0b
+	"bankB"
+ROMX $0c
+	"Tileset Data 4"
+ROMX $0d
+	"Effect Commands"
+ROMX $0e
+	"Enemy Trainers"
+ROMX $0f
+	"Battle Core"
+ROMX $10
+	"bank10"
+	"Evolutions and Attacks"
+ROMX $11
+	"bank11"
+ROMX $12
+	"Crystal Unique"
+ROMX $13
+	"bank13"
+ROMX $14
+	"bank14"
+ROMX $15
+	"Map Scripts 1"
+ROMX $16
+	"Map Scripts 2"
+ROMX $17
+	"Map Scripts 3"
+ROMX $18
+	"Map Scripts 4"
+ROMX $19
+	"bank19"
+ROMX $1a
+	"Map Scripts 5"
+ROMX $1b
+	"Map Scripts 6"
+ROMX $1c
+	"Map Scripts 7"
+ROMX $1d
+	"Map Scripts 8"
+ROMX $1e
+	"Map Scripts 9"
+ROMX $1f
+	"Map Scripts 10"
+ROMX $20
+	"bank20"
+ROMX $21
+	"bank21"
+ROMX $22
+	"bank22"
+ROMX $23
+	"bank23"
+ROMX $24
+	"bank24"
+ROMX $25
+	"Map Headers"
+	"Events"
+ROMX $26
+	"Map Scripts 11"
+ROMX $27
+	"Map Scripts 12"
+ROMX $28
+	"Phone Engine"
+ROMX $29
+	"Phone Text"
+ROMX $2a
+	"Map Blockdata 1"
+ROMX $2b
+	"Map Blockdata 2"
+ROMX $2c
+	"Map Blockdata 3"
+ROMX $2d
+	"Tileset Data 5"
+ROMX $2e
+	"bank2E"
+ROMX $2f
+	"bank2F"
+ROMX $30
+	"bank30"
+ROMX $31
+	"bank31"
+ROMX $32
+	"bank32"
+ROMX $33
+	"bank33"
+	"Extra Songs 2"
+ROMX $34
+	"Pic Animations 1"
+ROMX $35
+	"Pic Animations 2"
+ROMX $36
+	"bank36"
+	"Pic Animations 3"
+ROMX $37
+	"Tileset Data 6"
+ROMX $38
+	"bank38"
+ROMX $39
+	"bank39"
+ROMX $3a
+	"Audio"
+	"Songs 1"
+ROMX $3b
+	"Songs 2"
+ROMX $3c
+	"Songs 3"
+	"Sound Effects"
+	"Cries"
+ROMX $3d
+	"Songs 4"
+ROMX $3e
+	"bank3E"
+ROMX $3f
+	"bank3F"
+ROMX $40
+	"bank40"
+	"tetsuji"
+	"bank40_2"
+	"ascii 10186f"
+	"bank40_3"
+ROMX $41
+	"bank41"
+	"bank41_2"
+ROMX $42
+	"bank42"
+	"Intro Logo"
+	"Credits"
+ROMX $43
+	"bank43"
+ROMX $44
+	"Main"
+ROMX $45
+	"bank45"
+	"Mobile Stadium"
+ROMX $46
+	"bank46"
+	"bank46_2"
+ROMX $47
+	"bank47"
+ROMX $48
+	"Pic Pointers"
+	"Pics 1"
+ROMX $49
+	"Unown Pic Pointers"
+	"Pics 2"
+ROMX $4a
+	"Trainer Pic Pointers"
+	"Pics 3"
+ROMX $4b
+	"Pics 4"
+ROMX $4c
+	"Pics 5"
+ROMX $4d
+	"Pics 6"
+ROMX $4e
+	"Pics 7"
+ROMX $4f
+	"Pics 8"
+ROMX $50
+	"Pics 9"
+ROMX $51
+	"Pics 10"
+ROMX $52
+	"Pics 11"
+ROMX $53
+	"Pics 12"
+ROMX $54
+	"Pics 13"
+ROMX $55
+	"Pics 14"
+ROMX $56
+	"Pics 15"
+ROMX $57
+	"Pics 16"
+ROMX $58
+	"Pics 17"
+ROMX $59
+	"Pics 18"
+ROMX $5a
+	"Pics 19"
+ROMX $5b
+	"bank5B"
+ROMX $5c
+	"bank5C"
+ROMX $5d
+	"bank5D"
+ROMX $5e
+	"bank5E"
+	"Songs 5"
+	"Crystal Sound Effects"
+	"Misc Crystal"
+ROMX $5f
+	"bank5F"
+ROMX $60
+	"Map Scripts 13"
+	"Pokedex Entries 001-064"
+ROMX $61
+	"Map Scripts 14"
+ROMX $62
+	"Map Scripts 15"
+ROMX $63
+	"Map Scripts 16"
+ROMX $64
+	"Map Scripts 17"
+ROMX $65
+	"Map Scripts 18"
+ROMX $66
+	"Map Scripts 19"
+ROMX $67
+	"Map Scripts 20"
+ROMX $68
+	"Map Scripts 21"
+ROMX $69
+	"Map Scripts 22"
+ROMX $6a
+	"Map Scripts 23"
+ROMX $6b
+	"Map Scripts 24"
+ROMX $6c
+	"Common Text 1"
+	"Map Scripts 25"
+ROMX $6d
+	"bank6D"
+ROMX $6e
+	"Pokedex Entries 065-128"
+ROMX $6f
+	"Text 1"
+ROMX $70
+	"Text 2"
+ROMX $71
+	"Text 3"
+ROMX $72
+	"bank72"
+ROMX $73
+	"Pokedex Entries 129-192"
+ROMX $74
+	"Pokedex Entries 193-251"
+ROMX $77
+	"bank77"
+	"Tileset Data 7"
+	"bank77_2"
+ROMX $78
+	"Tileset Data 8"
+ROMX $7b
+	"bank7B"
+ROMX $7c
+	"bank7C"
+ROMX $7d
+	"bank7D"
+ROMX $7e
+	"bank7E"
+ROMX $7f
+	"bank7F"
+	org $7de0
+	"stadium2"
+WRAM0
+	"Stack"
+	"Audio RAM"
+	"WRAM"
+	"wSpriteAnims"
+	"Sprites"
+	"Tilemap"
+	"Battle"
+	"Overworld Map"
+	"Video"
+WRAMX 1
+	"WRAM 1"
+	"Enemy Party"
+	"Party"
+WRAMX 2
+	"Pic Animations"
+WRAMX 3
+	"Battle Tower"
+WRAMX 5
+	"GBC Video"
+	org $d300
+	"Battle Animations"
+	org $d800
+	"WRAM 5 MOBILE"
+WRAMX 6
+	"WRAM 6"
+WRAMX 7
+	"WRAM 7"
+VRAM $00
+	"VRAM0"
+VRAM $01
+	"VRAM1"
+SRAM $00
+	"Scratch"
+	org $a600
+	"SRAM Bank 0"
+	org $b200
+	"Backup Save"
+SRAM $01
+	"Save"
+	"Active Box"
+	"Link Battle Data"
+	"SRAM Hall of Fame"
+	"SRAM Crystal Data"
+	"SRAM Battle Tower"
+SRAM $02
+	"Boxes 1-7"
+SRAM $03
+	"Boxes 8-14"
--- a/rst.asm
+++ b/rst.asm
@@ -1,24 +1,24 @@
 ; rst vectors
 
-SECTION "rst0",ROM0[0]
+SECTION "rst0",ROM0
 	di
 	jp Start
 
-SECTION "rst8",ROM0[FarCall]
+SECTION "rst8",ROM0
 	jp FarCall_hl
 
-SECTION "rst10",ROM0[Bankswitch]
+SECTION "rst10",ROM0
 	ld [hROMBank], a
 	ld [MBC3RomBank], a
 	ret
 
-SECTION "rst18",ROM0[$18]
+SECTION "rst18",ROM0
 	rst $38
 
-SECTION "rst20",ROM0[$20]
+SECTION "rst20",ROM0
 	rst $38
 
-SECTION "rst28",ROM0[JumpTable]
+SECTION "rst28",ROM0
 	push de
 	ld e, a
 	ld d, 0
@@ -30,8 +30,8 @@
 	pop de
 	jp hl
 
-; SECTION "rst30",ROM0[$30]
+; SECTION "rst30",ROM0
 ; rst30 is midst rst28
 
-SECTION "rst38",ROM0[$38]
+SECTION "rst38",ROM0
 	rst $38
--- a/sram.asm
+++ b/sram.asm
@@ -3,11 +3,11 @@
 GLOBAL SRAM_Begin, SRAM_End
 
 
-SECTION "Scratch", SRAM, BANK [0]
+SECTION "Scratch", SRAM
 sScratch::
 
 
-SECTION "SRAM Bank 0", SRAM [$a600], BANK [0]
+SECTION "SRAM Bank 0", SRAM
 
 ; a600
 sPartyMail::
@@ -78,7 +78,7 @@
 sLuckyNumberDay:: ds 1
 sLuckyIDNumber:: ds 2
 
-SECTION "Backup Save", SRAM [$b200], BANK [0]
+SECTION "Backup Save", SRAM
 sBackupOptions:: ds OptionsEnd - Options
 
 s0_b208:: ds 1 ; loaded with 99, used to check save corruption
@@ -98,7 +98,7 @@
 sStackTop:: ds 2
 
 
-SECTION "Save", SRAM, BANK [1]
+SECTION "Save", SRAM
 
 sOptions:: ds OptionsEnd - Options
 
@@ -117,13 +117,13 @@
 sChecksum::   ds 2
 s1_ad0f::     ds 1 ; loaded with 0x7f, used to check save corruption
 
-SECTION "Active Box", SRAM, BANK [1]
+SECTION "Active Box", SRAM
 ; ad10
 	box sBox
 ; b160
 
 	ds $f4
-SECTION "Link Battle Data", SRAM, BANK [1]
+SECTION "Link Battle Data", SRAM
 sLinkBattleResults:: ds $c
 
 sLinkBattleStats:: ; b260
@@ -145,7 +145,7 @@
 sLinkBattleRecord5:: link_battle_record sLinkBattleRecord5
 sLinkBattleStatsEnd::
 
-SECTION "SRAM Hall of Fame", SRAM, BANK [1]
+SECTION "SRAM Hall of Fame", SRAM
 sHallOfFame:: ; b2c0
 ; temporary until I can find a way to macrofy it
 	hall_of_fame sHallOfFame01
@@ -193,7 +193,7 @@
 ; endr
 sHallOfFameEnd::
 
-SECTION "SRAM Crystal Data", SRAM, BANK [1]
+SECTION "SRAM Crystal Data", SRAM
 sMobileEventIndex:: ds 1 ; be3c
 
 sCrystalData::
@@ -200,7 +200,7 @@
 	ds wCrystalDataEnd - wCrystalData
 sMobileEventIndexBackup:: ds 1
 
-SECTION "SRAM Battle Tower", SRAM, BANK [1]
+SECTION "SRAM Battle Tower", SRAM
 ; data of the BattleTower must be in SRAM because you can save and leave between battles
 sBattleTowerChallengeState:: ds 1
 ; 0: normal
@@ -235,7 +235,7 @@
 	box sBox6
 	box sBox7
 
-SECTION "Boxes 8-14", SRAM, BANK [3]
+SECTION "Boxes 8-14", SRAM
 	box sBox8
 	box sBox9
 	box sBox10
--- a/text/common_text.asm
+++ b/text/common_text.asm
@@ -1,12 +1,12 @@
 INCLUDE "includes.asm"
 
-SECTION "Text 1", ROMX, BANK[$6F]
+SECTION "Text 1", ROMX
 INCLUDE "text/common_1.asm"
 
-SECTION "Text 2", ROMX, BANK[$70]
+SECTION "Text 2", ROMX
 INCLUDE "text/common_2.asm"
 INCLUDE "text/common_3.asm"
 
-SECTION "Text 3", ROMX, BANK[$71]
+SECTION "Text 3", ROMX
 INCLUDE "text/common_4.asm"
 INCLUDE "text/common_5.asm"
--- a/tilesets/animations.asm
+++ b/tilesets/animations.asm
@@ -420,7 +420,7 @@
 
 
 AnimateFountain: ; fc387
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 	ld hl, .frames
@@ -462,7 +462,7 @@
 ; Draw a water tile for the current frame in VRAM tile at de.
 
 ; Save sp in bc (see WriteTile).
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -497,7 +497,7 @@
 
 
 ForestTreeLeftAnimation: ; fc45c
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -539,7 +539,7 @@
 
 
 ForestTreeRightAnimation: ; fc4c4
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -574,7 +574,7 @@
 
 
 ForestTreeLeftAnimation2: ; fc4f2
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -606,7 +606,7 @@
 
 
 ForestTreeRightAnimation2: ; fc51c
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -671,7 +671,7 @@
 ; No parameters.
 
 ; Save sp in bc (see WriteTile).
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -707,7 +707,7 @@
 
 SafariFountainAnim1: ; fc5cc
 ; Splash in the bottom-right corner of the fountain.
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 	ld a, [TileAnimationTimer]
@@ -729,7 +729,7 @@
 
 SafariFountainAnim2: ; fc5eb
 ; Splash in the top-left corner of the fountain.
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 	ld a, [TileAnimationTimer]
@@ -760,7 +760,7 @@
 ; 	Destination (VRAM)
 ;	Address of the first tile in the frame array
 
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -820,7 +820,7 @@
 ; Only does one of 4 tiles at a time.
 
 ; Save sp in bc (see WriteTile).
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -860,7 +860,7 @@
 ; Write tiledata at wTileAnimBuffer to de.
 ; wTileAnimBuffer is loaded to sp for WriteTile.
 
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
@@ -877,7 +877,7 @@
 ; Write tiledata de to wTileAnimBuffer.
 ; de is loaded to sp for WriteTile.
 
-	ld hl, [sp+0]
+	ld hl, sp+0
 	ld b, h
 	ld c, l
 
--- a/wram.asm
+++ b/wram.asm
@@ -11,7 +11,7 @@
 	ds 1
 
 
-SECTION "Audio", WRAM0
+SECTION "Audio RAM", WRAM0
 wMusic::
 MusicPlaying:: ; c100
 ; nonzero if playing
@@ -216,12 +216,15 @@
 
 	ds 1
 
-SECTION "wSpriteAnims", WRAM0 [$c300]
+SECTION "wSpriteAnims", WRAM0
 ; wc300 - wc313 is a 10x2 dictionary.
 ; keys: taken from third column of SpriteAnimSeqData
 ; values: VTiles
+
+UNION
 wSpriteAnimDict:: ds 10 * 2
-	ds wSpriteAnimDict - @
+
+NEXTU
 wc300:: ds 1
 wc301:: ds 1
 wc302:: ds 1
@@ -241,6 +244,8 @@
 wc311:: ds 1
 wc312:: ds 1
 wc313:: ds 1
+ENDU
+
 wSpriteAnimationStructs::
 ; Field  0: Index
 ; Fields 1-3: Loaded from SpriteAnimSeqData
@@ -263,10 +268,15 @@
 wc394::
 SpriteAnim9:: sprite_anim_struct SpriteAnim9
 wc3a4::
+
+UNION
 SpriteAnim10:: sprite_anim_struct SpriteAnim10
 wSpriteAnimationStructsEnd::
-	ds -8
+NEXTU
+	ds 8
 wc3ac:: ds 8 ; c3ac
+ENDU
+
 wSpriteAnimCount:: ds 1
 wCurrSpriteOAMAddr:: ds 1
 
@@ -310,7 +320,7 @@
 wc3fc:: ds 4
 
 
-SECTION "Sprites", WRAM0 [$c400]
+SECTION "Sprites", WRAM0
 
 Sprites:: ; c400
 ; 4 bytes per sprite
@@ -339,18 +349,19 @@
 
 
 SECTION "Battle", WRAM0
+UNION
 wc608::
 wOddEgg:: party_struct OddEgg
 wOddEggName:: ds PKMN_NAME_LENGTH
 wOddEggOTName:: ds PKMN_NAME_LENGTH
-	ds wc608 - @
 
+NEXTU
 wBT_OTTemp:: battle_tower_struct wBT_OTTemp
-	ds wc608 - @
 
+NEXTU
 	hall_of_fame wHallOfFameTemp
-	ds wc608 - @
 
+NEXTU
 wMisc:: ; ds (SCREEN_WIDTH + 4) * (SCREEN_HEIGHT + 2)
 	ds 10
 wc612::
@@ -360,8 +371,8 @@
 wInitHourBuffer:: ; c61c
 	ds 10
 wc626::
-	ds wc608 - @
 
+NEXTU
 wBattle::
 wEnemyMoveStruct::  move_struct wEnemyMoveStruct ; c608
 wPlayerMoveStruct:: move_struct wPlayerMoveStruct ; c60f
@@ -559,6 +570,7 @@
 PlayerSAtkLevel:: ; c6cf
 	ds 1
 
+UNION
 wc6d0::
 PlayerSDefLevel:: ; c6d0
 	ds 1
@@ -743,7 +755,7 @@
 ; Battle RAM
 
 ; c741
-	ds wc6d0 - @
+NEXTU
 wTrademons::
 wPlayerTrademon:: trademon wPlayerTrademon
 wOTTrademon::     trademon wOTTrademon
@@ -759,8 +771,8 @@
 wc7ba:: ds 1
 wc7bb:: ds 2
 wc7bd::
-	ds wc6d0 - @
 
+NEXTU
 ; naming screen
 wNamingScreenDestinationPointer:: ds 2 ; c6d0
 wNamingScreenCurrNameLength:: ds 1 ; c6d2
@@ -769,8 +781,8 @@
 wNamingScreenCursorObjectPointer:: ds 2 ; c6d5
 wNamingScreenLastCharacter:: ds 1 ; c6d7
 wNamingScreenStringEntryCoord:: ds 2 ; c6d8
-	ds wc6d0 - @
 
+NEXTU
 ; pokegear
 wPokegearPhoneLoadNameBuffer:: ds 1 ; c6d0
 wPokegearPhoneCursorPosition:: ds 1 ; c6d1
@@ -783,8 +795,8 @@
 wPokegearRadioChannelBank:: ds 1 ; c6d9
 wPokegearRadioChannelAddr:: ds 2 ; c6da
 wPokegearRadioMusicPlaying:: ds 1 ; c6dc
-	ds wc6d0 - @
 
+NEXTU
 wSlots::
 ; Slot Machine
 ; c6d0
@@ -809,8 +821,8 @@
 wSlotsDataEnd::
 	ds 28
 wSlotsEnd::
-	ds wSlots - @
 
+NEXTU
 ; Card Flip
 ; c6d0
 wCardFlip::
@@ -822,8 +834,8 @@
 wDiscardPile:: ds 24
 wDiscardPileEnd::
 wCardFlipEnd::
-	ds wCardFlip - @
 
+NEXTU
 ; Dummy Game
 ; c6d0
 wDummyGame::
@@ -839,7 +851,8 @@
 wDummyGameCounter:: ds 1 ; c708
 wDummyGameNumCardsMatched:: ds 1 ; c709
 wDummyGameEnd::
-	ds wDummyGame - @
+
+NEXTU
 ; Unown Puzzle
 wUnownPuzzle::
 wPuzzlePieces::
@@ -846,8 +859,7 @@
 	ds 6 * 6
 wUnownPuzzleEnd::
 
-	ds wc6d0 - @
-
+NEXTU
 wPokedexDataStart::
 wPokedexOrder:: ds NUM_POKEMON +- 1
 wPokedexOrderEnd:: ds 6
@@ -893,20 +905,24 @@
 	ds 2
 
 wMiscEnd::
+ENDU
+ENDU
 
 wc7e8:: ds 24 ; ????
 
-SECTION "Overworld Map", WRAM0 [$c800]
+SECTION "Overworld Map", WRAM0
 
+UNION
 OverworldMap:: ; c800
 	ds 1300
 OverworldMapEnd::
-	ds OverworldMap - @
+NEXTU
 
 wGameboyPrinterRAM::
 wGameboyPrinterScreen:: ds SCREEN_HEIGHT * SCREEN_WIDTH ; c800
 wGameboyPrinterScreenEnd:: ; c968
-	ds wGameboyPrinterScreen - @
+NEXTU
+
 wGameboyPrinter2bppSource::
 	ds 40 tiles
 wGameboyPrinter2bppSourceEnd::
@@ -941,8 +957,8 @@
 wGBPrinterSettings:: ds 1
 	ds 16
 wGameboyPrinterRAMEnd::
-	ds wGameboyPrinterRAM - @
 
+NEXTU
 wBillsPCPokemonList:: ; c800
 ; Pokemon, box number, list index
 
@@ -955,6 +971,7 @@
 wLinkPartySpecies:: ds PARTY_LENGTH
 wLinkPartySpeciesEnd:: ds 1
 
+UNION
 wTimeCapsulePlayerData::
 wTimeCapsulePartyMon1:: red_party_struct wTimeCapsulePartyMon1
 wTimeCapsulePartyMon2:: red_party_struct wTimeCapsulePartyMon2
@@ -965,8 +982,8 @@
 wTimeCapsulePartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
 wTimeCapsulePartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
 wTimeCapsulePlayerDataEnd::
-	ds wTimeCapsulePlayerData - @
 
+NEXTU
 wLinkPlayerData::
 wLinkPlayerPartyMon1:: party_struct wLinkPlayerPartyMon1
 wLinkPlayerPartyMon2:: party_struct wLinkPlayerPartyMon2
@@ -977,10 +994,11 @@
 wLinkPlayerPartyMonOTNames:: ds PARTY_LENGTH * NAME_LENGTH
 wLinkPlayerPartyMonNicks:: ds PARTY_LENGTH * PKMN_NAME_LENGTH
 wLinkPlayerDataEnd::
+ENDU
 	ds $35d
 
 wLinkDataEnd::
-	ds wLinkData - @
+NEXTU
 
 wc800::	ds 1
 wc801:: ds 1
@@ -999,9 +1017,11 @@
 wc821:: ds 15
 wc830:: ds 16
 wc840:: ds 16
+UNION
 wMysteryGiftTrainerData:: ds (1 + 1 + NUM_MOVES) * PARTY_LENGTH + 2
 wMysteryGiftTrainerDataEnd::
-	ds wMysteryGiftTrainerData - @
+
+NEXTU
 wc850:: ds 16
 wc860:: ds 16
 wc870:: ds 16
@@ -1013,6 +1033,7 @@
 wc8d0:: ds 16
 wc8e0:: ds 16
 wc8f0:: ds 16
+ENDU
 
 wMysteryGiftPartnerData::
 wc900:: ds 1
@@ -1108,8 +1129,11 @@
 wccb8:: ds 1
 wccb9:: ds 1
 wccba:: ds 102
+ENDU
 
 SECTION "Video", WRAM0
+
+UNION
 CreditsPos::
 BGMapBuffer::
 wMobileMonSpeciesPointerBuffer:: dw
@@ -1117,8 +1141,8 @@
 wMobileMonOTNamePointerBuffer:: dw
 wMobileMonNicknamePointerBuffer:: dw
 wMobileMonMailPointerBuffer:: dw
-	ds CreditsPos - @
 
+NEXTU
 wcd20:: ds 1
 wcd21:: ds 1
 wcd22::
@@ -1132,6 +1156,8 @@
 wcd27:: ds 1
 wcd28:: ds 1
 wcd29:: ds 1
+ENDU
+
 wMobileMonSpeciesBuffer::
 wcd2a:: ds 1
 wTempOddEggNickname::
@@ -1267,14 +1293,19 @@
 ;		bit 2-0: pal # (cgb only)
 	ds SCREEN_WIDTH * SCREEN_HEIGHT
 AttrMapEnd::
+
+UNION
 	ds 1
 wcf42:: ds 2
 wcf44:: ds 1
 wcf45::
-	ds AttrMapEnd - @
+
+NEXTU
 wTileAnimBuffer::
 	ds $10
 ; addresses dealing with serial comms
+ENDU
+
 wOtherPlayerLinkMode:: ds 1
 wOtherPlayerLinkAction:: ds 4
 wPlayerLinkAction:: ds 1
@@ -1512,7 +1543,7 @@
 wRAM0End:: ; cfd8
 
 
-SECTION "WRAM 1", WRAMX, BANK [1]
+SECTION "WRAM 1", WRAMX
 
 wd000:: ds 1
 DefaultSpawnpoint::
@@ -1519,9 +1550,10 @@
 wd001:: ds 1
 
 ; d002
+UNION
 wTempMail:: mailmsg wTempMail
-	ds wTempMail - @
 
+NEXTU
 wSeerAction:: ds 1
 wSeerNickname:: ds PKMN_NAME_LENGTH
 wSeerCaughtLocation:: ds 17
@@ -1532,15 +1564,15 @@
 wSeerCaughtLevel:: ds 1
 wSeerCaughtData:: ds 1
 wSeerCaughtGender:: ds 1
-	ds wSeerAction - @
 
+NEXTU
 wBufferMonNick:: ds PKMN_NAME_LENGTH ; d002
 wBufferMonOT:: ds NAME_LENGTH ; d00d
 wBufferMon:: party_struct wBufferMon ; d018
 	ds 8
 wMonOrItemNameBuffer::
-	ds wBufferMonNick - @
 
+NEXTU
 wBugContestResults::
 	bugcontestwinner wBugContestFirstPlace
 	bugcontestwinner wBugContestSecondPlace
@@ -1550,8 +1582,7 @@
 	ds 4
 wBugContestWinnerName:: ds NAME_LENGTH
 
-	ds wBugContestResults - @
-
+NEXTU
 wd002::
 wTempDayOfWeek::
 wApricorns::
@@ -1602,10 +1633,11 @@
 wMartItem4BCD::
 wd00b:: ds 1
 
+UNION
 wRadioText:: ds 2 * SCREEN_WIDTH
 wRadioTextEnd::
-	ds wRadioText - @
 
+NEXTU
 wMobileParticipant2Nickname::
 wd00c:: ds 1
 wd00d:: ds 1
@@ -1632,6 +1664,7 @@
 wd01f:: ds 1
 wMartItemBCDEnd::
 	ds 13
+
 wd02d:: ds 1
 wd02e:: ds 1
 wd02f:: ds 1
@@ -1643,6 +1676,7 @@
 wd036:: ds 2
 wd038:: ds 3
 wd03b:: ds 3
+ENDU
 
 MenuItemsList::
 CurFruitTree::
@@ -1713,6 +1747,7 @@
 wTempTrainerHeaderEnd::
 wPlayerTurningDirection:: ; d04e
 	ds 24
+ENDU
 wTMHMMoveNameBackup:: ds MOVE_NAME_LENGTH ; d066
 
 StringBuffer1:: ; d073
@@ -1780,9 +1815,12 @@
 
 wBattleResult:: ds 1 ; d0ee
 wUsingItemWithSelect:: ds 1 ; d0ef
+
+UNION
 CurMart:: ds 16 ; d0f0
 CurMartEnd::
-	ds CurMart - @
+
+NEXTU
 CurElevator:: ds 1
 wd0f1::
 CurElevatorFloors::
@@ -1791,8 +1829,8 @@
 wMailboxCount:: ds 1
 wMailboxItems:: ds MAILBOX_CAPACITY
 wMailboxEnd:: ds 1 ; d0fe
-	ds 2
 
+ENDU
 wListPointer:: dw ; d100
 wUnusedD102:: dw ; d102
 wItemAttributesPtr:: dw ; d104
@@ -1869,10 +1907,11 @@
 
 wBGMapAnchor:: ds 2 ; d152
 
+UNION
 UsedSprites:: ds 64 ; d154
 UsedSpritesEnd::
-	ds UsedSprites - @
 
+NEXTU
 wd154:: ; d154
 	ds 31 ; 64
 
@@ -1885,6 +1924,8 @@
 wd191:: ds 1
 wd192:: ds 1
 wd193:: ds 1
+ENDU
+
 wOverworldMapAnchor:: dw ; d194
 wMetatileStandingY:: ds 1 ; d196
 wMetatileStandingX:: ds 1 ; d197
@@ -2022,6 +2063,7 @@
 
 wForceEvolution:: db ; d1e9
 
+UNION
 ; HP bar animations
 wCurHPAnimMaxHP::   dw ; d1ea
 wCurHPAnimOldHP::   dw ; d1ec
@@ -2032,8 +2074,8 @@
 wCurHPAnimDeltaHP:: dw ; d1f3
 wCurHPAnimLowHP::   db ; d1f5
 wCurHPAnimHighHP::  db ; d1f6
-	ds wCurHPAnimMaxHP - @
 
+NEXTU
 MagikarpLength::
 wEvolutionOldSpecies::
 Buffer1:: ; d1ea
@@ -2061,6 +2103,7 @@
 wd1f5:: ds 1
 wd1f6::
 	ds 4
+ENDU
 
 LinkBattleRNs:: ; d1fa
 	ds 10
@@ -2191,7 +2234,8 @@
 
 	ds 1
 
-SECTION "Enemy Party", WRAMX, BANK [1]
+SECTION "Enemy Party", WRAMX
+UNION
 wPokedexShowPointerAddr::
 wd26b:: ds 1
 wd26c:: ds 1
@@ -2199,11 +2243,12 @@
 wd26d:: ds 1
 	ds 3
 wd271:: ds 5
-	ds wd26b - @
 
-
-; SECTION "Enemy Party", WRAMX, BANK [1]
+NEXTU
+; SECTION "Enemy Party", WRAMX
 OTPlayerName:: ds NAME_LENGTH ; d26b
+ENDU
+
 OTPlayerID:: ds 2 ; d276
 	ds 8
 OTPartyCount::   ds 1 ; d280
@@ -2210,6 +2255,7 @@
 OTPartySpecies:: ds PARTY_LENGTH ; d281
 OTPartyEnd::     ds 1
 
+UNION
 wDudeBag:: ; d288
 wDudeNumItems:: ds 1
 wDudeItems:: ds 2 * 4
@@ -2223,8 +2269,8 @@
 wDudeBalls:: ds 2 * 4 ; d2a7
 wDudeBallsEnd:: ds 1 ; d2af
 wDudeBagEnd::
-	ds wDudeBag - @
 
+NEXTU
 OTPartyMons::
 OTPartyMon1:: party_struct OTPartyMon1 ; d288
 OTPartyMon2:: party_struct OTPartyMon2 ; d2b8
@@ -2238,6 +2284,7 @@
 OTPartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; d3ea
 OTPartyDataEnd::
 	ds 4
+ENDU
 
 wd430::
 wBattleAction:: ds 1 ; d430
@@ -2528,7 +2575,7 @@
 	ds 13
 
 
-;SECTION "Map Triggers", WRAMX, BANK [1]
+;SECTION "Map Triggers", WRAMX
 
 wPokecenter2FTrigger::                       ds 1 ; d972
 wTradeCenterTrigger::                        ds 1 ; d973
@@ -2613,7 +2660,7 @@
 	ds 49
 
 
-;SECTION "Events", WRAMX, BANK [1]
+;SECTION "Events", WRAMX
 
 wJackFightCount::    ds 1 ; d9f2
 wBeverlyFightCount:: ds 1 ; unused
@@ -2806,7 +2853,7 @@
 wMapDataEnd::
 
 
-SECTION "Party", WRAMX, BANK [1]
+SECTION "Party", WRAMX
 
 wPokemonData::
 
@@ -2905,7 +2952,7 @@
 wPokemonDataEnd::
 wGameDataEnd::
 
-SECTION "Pic Animations", WRAMX, BANK [2]
+SECTION "Pic Animations", WRAMX
 
 TempTileMap::
 ; 20x18 grid of 8x8 tiles
@@ -2944,7 +2991,7 @@
 wPokeAnimStructEnd::
 
 
-SECTION "Battle Tower", WRAMX, BANK [3]
+SECTION "Battle Tower", WRAMX
 
 w3_d000:: ds 1 ; d000
 w3_d001:: ds 1
@@ -2967,13 +3014,17 @@
 w3_d4a2:: battle_tower_struct w3_d4a2
 w3_d582:: battle_tower_struct w3_d582
 w3_d662:: battle_tower_struct w3_d662
+UNION
 w3_d742:: battle_tower_struct w3_d742
 ; d822
-	ds -$22
 
+NEXTU
+	ds $be
+
 wBTChoiceOfLvlGroup::
 w3_d800:: ; ds BG_MAP_WIDTH * SCREEN_HEIGHT ($240)
 	ds $69
+ENDU
 w3_d869:: ds $17
 w3_d880:: ds 1
 w3_d881:: ds 1
@@ -2995,7 +3046,7 @@
 w3_dfec:: ds $10
 w3_dffc:: ds 4
 
-SECTION "GBC Video", WRAMX, BANK [5]
+SECTION "GBC Video", WRAMX
 
 ; 8 4-color palettes
 UnknBGPals:: ds 8 palettes ; d000
@@ -3020,7 +3071,7 @@
 LYOverridesBackupEnd::
 
 
-SECTION "Battle Animations", WRAMX [$d300], BANK [5]
+SECTION "Battle Animations", WRAMX
 
 wBattleAnimTileDict:: ds 10
 
@@ -3080,12 +3131,16 @@
 wBattleAnimTempPalette::
 wBattleAnimTemp8:: ds 1
 
+UNION
 wSurfWaveBGEffect:: ds $40
 wSurfWaveBGEffectEnd::
-	ds -$e
+
+NEXTU
+	ds $32
 wBattleAnimEnd::
+ENDU
 
-SECTION "WRAM 5 MOBILE", WRAMX [$d800], BANK [5]
+SECTION "WRAM 5 MOBILE", WRAMX
 w5_d800:: ds $200
 w5_da00:: ds $200
 w5_dc00:: ds $d
@@ -3096,7 +3151,7 @@
 w5_MobileOpponentBattleWinMessage:: ds $c ; dc32
 w5_MobileOpponentBattleLossMessage:: ds $c ; dc3e
 
-SECTION "WRAM 6", WRAMX, BANK [6]
+SECTION "WRAM 6", WRAMX
 
 wDecompressScratch::
 wScratchTileMap::
@@ -3107,6 +3162,6 @@
 
 INCLUDE "sram.asm"
 
-SECTION "WRAM 7", WRAMX, BANK [7]
+SECTION "WRAM 7", WRAMX
 wWindowStack:: ds $1000 - 1
 wWindowStackBottom:: ds 1