diff --git a/macros.asm b/macros.asm index 7d934866a..caa8a6a1b 100644 --- a/macros.asm +++ b/macros.asm @@ -8,18 +8,9 @@ INCLUDE "macros/movement.asm" INCLUDE "macros/map.asm" -text EQUS "db $00," ; Start writing text. -next EQUS "db $4e," ; Move a line down. -line EQUS "db $4f," ; Start writing at the bottom line. -para EQUS "db $51," ; Start a new paragraph. -cont EQUS "db $55," ; Scroll to the next line. -done EQUS "db $57" ; End a text box. -prompt EQUS "db $58" ; Prompt the player to end a text box (initiating some other event). - -; Pokedex text commands are only used with pokered. -; They are included for compatibility. -page EQUS "db $50," ; Start a new Pokedex page. -dex EQUS "db $e8, $50" ; End a Pokedex entry. +RGB: MACRO + dw ((\3) << 10) + ((\2) << 5) + (\1) + ENDM percent EQUS "* $ff / 100" @@ -29,8 +20,22 @@ FarCall EQU $08 Bankswitch EQU $10 JumpTable EQU $28 +farcall: MACRO ; bank, address + ld a, BANK(\1) + ld hl, \1 + rst FarCall + ENDM -NONE EQU 0 +callba EQUS "farcall" + +callab: MACRO ; address, bank + ld hl, \1 + ld a, BANK(\1) + rst FarCall + ENDM + + +NONE EQU 0 dwb: MACRO @@ -54,29 +59,22 @@ dbwww: MACRO ENDM dn: MACRO + rept _NARG / 2 db (\1) << 4 + (\2) + shift + shift + endr ENDM dt: MACRO ; three-byte (big-endian) - db (\1 >> 16) & $ff - db (\1 >> 8) & $ff - db \1 & $ff + db ((\1) >> 16) & $ff + db ((\1) >> 8) & $ff + db (\1) & $ff ENDM bigdw: MACRO ; big-endian word - dw ((\1)/$100) + (((\1)&$ff)*$100) - ENDM - -callab: MACRO ; address, bank - ld hl, \1 - ld a, BANK(\1) - rst FarCall - ENDM - -callba: MACRO ; bank, address - ld a, BANK(\1) - ld hl, \1 - rst FarCall + db (\1) / $100 + db (\1) % $100 ENDM @@ -84,6 +82,40 @@ lb: MACRO ; r, hi, lo ld \1, (\2) << 8 + (\3) ENDM +bccoord: MACRO + coord bc, \1, \2 + ENDM + +decoord: MACRO + coord de, \1, \2 + ENDM + +hlcoord: MACRO + coord hl, \1, \2 + ENDM + +coord: MACRO + ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2) + ENDM + + +; pic animations +frame: MACRO + db \1 + db \2 + ENDM +setrepeat: MACRO + db $fe + db \1 + ENDM +dorepeat: MACRO + db $fd + db \1 + ENDM +endanim: MACRO + db $ff + ENDM + ; Constant enumeration @@ -97,24 +129,9 @@ const_value SET const_value + 1 ENDM -TX_RAM: MACRO - db 1 - dw \1 - ENDM - -TX_FAR: MACRO - db $16 - dw \1 - db BANK(\1) - ENDM - -RGB: MACRO - dw (((\3) << 10) | ((\2) << 5) | (\1)) - ENDM - note: MACRO - db (\1) << 4 + ((\2) - 1) + dn (\1), (\2) - 1 ENDM sound: macro @@ -145,36 +162,6 @@ A# EQU 11 B_ EQU 12 -bccoord: MACRO - ld bc, TileMap + SCREEN_WIDTH * (\2) + (\1) - ENDM - -decoord: MACRO - ld de, TileMap + SCREEN_WIDTH * (\2) + (\1) - ENDM - -hlcoord: MACRO - ld hl, TileMap + SCREEN_WIDTH * (\2) + (\1) - ENDM - - -; pic animations -frame: MACRO - db \1 - db \2 - ENDM -setrepeat: MACRO - db $fe - db \1 - ENDM -dorepeat: MACRO - db $fd - db \1 - ENDM -endanim: MACRO - db $ff - ENDM - ; maps @@ -193,20 +180,13 @@ roam_map: MACRO ; A map and an arbitrary number of some more maps. map \1 - db \2 + db \2 -IF \2 > 0 + rept \2 map \3 -ENDC -IF \2 > 1 - map \4 -ENDC -IF \2 > 2 - map \5 -ENDC -IF \2 > 3 - map \6 -ENDC + shift + endr + db 0 ENDM diff --git a/macros/text.asm b/macros/text.asm index ae49d8fbb..8174c5200 100644 --- a/macros/text.asm +++ b/macros/text.asm @@ -1,7 +1,30 @@ -text_from_ram: macro +text EQUS "db $00," ; Start writing text. +next EQUS "db $4e," ; Move a line down. +line EQUS "db $4f," ; Start writing at the bottom line. +para EQUS "db $51," ; Start a new paragraph. +cont EQUS "db $55," ; Scroll to the next line. +done EQUS "db $57" ; End a text box. +prompt EQUS "db $58" ; Prompt the player to end a text box (initiating some other event). + +; Pokedex text commands are only used with pokered. +; They are included for compatibility. +page EQUS "db $50," ; Start a new Pokedex page. +dex EQUS "db $e8, $50" ; End a Pokedex entry. + + +TX_RAM: MACRO db 1 dw \1 - endm + ENDM + +TX_FAR: MACRO + db $16 + dw \1 + db BANK(\1) + ENDM + + +text_from_ram EQUS "TX_RAM" text_dunno1: macro db 5 @@ -58,8 +81,4 @@ current_day: macro db $15 endm -text_jump: macro - db $16 - dw \1 - db BANK(\1) - endm +text_jump EQUS "TX_FAR"