summaryrefslogtreecommitdiff
path: root/macros.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2014-07-12 09:02:49 -0400
committeryenatch <yenatch@gmail.com>2014-07-12 09:02:49 -0400
commitfb11ff7e55be56cef9234c8443614f04f2157a1e (patch)
treea6aa8d0745bd07d0b80090491b5e4b6652de4420 /macros.asm
parent15427f532085846ab6b51719be687951a094cb6c (diff)
parent9f29f21d9d43baa7124991dcf3b093fc6c615706 (diff)
Merge pull request #48 from yenatch/master
Clean up post-split main.asm. Get rid of static wram addresses. Lay out a foundation for Yellow.
Diffstat (limited to 'macros.asm')
-rw-r--r--macros.asm286
1 files changed, 222 insertions, 64 deletions
diff --git a/macros.asm b/macros.asm
index a0732705..8244c8c9 100644
--- a/macros.asm
+++ b/macros.asm
@@ -11,6 +11,18 @@ page EQUS "db $49," ; Start a new Pokedex page.
dex EQUS "db $5f, $50" ; End a Pokedex entry.
+homecall: MACRO
+ ld a, [H_LOADEDROMBANK]
+ push af
+ ld a, BANK(\1)
+ ld [H_LOADEDROMBANK], a
+ ld [MBC3RomBank], a
+ call \1
+ pop af
+ ld [H_LOADEDROMBANK], a
+ ld [MBC3RomBank], a
+ ENDM
+
callba: MACRO
ld b, BANK(\1)
ld hl, \1
@@ -25,15 +37,45 @@ callab: MACRO
;\1 = X
;\2 = Y
-FuncCoord: MACRO
-Coord = $C3A0 + 20 * \2 + \1
+hlCoord: MACRO
+ ld hl, wTileMap + 20 * \2 + \1
+ ENDM
+
+;\1 = X
+;\2 = Y
+deCoord: MACRO
+ ld de, wTileMap + 20 * \2 + \1
+ ENDM
+
+;\1 = X
+;\2 = Y
+bcCoord: MACRO
+ ld bc, wTileMap + 20 * \2 + \1
+ ENDM
+
+;\1 = X
+;\2 = Y
+aCoord: MACRO
+ ld a, [wTileMap + 20 * \2 + \1]
+ ENDM
+
+;\1 = X
+;\2 = Y
+Coorda: MACRO
+ ld [wTileMap + 20 * \2 + \1], a
+ ENDM
+
+;\1 = X
+;\2 = Y
+dwCoord: MACRO
+ dw wTileMap + 20 * \2 + \1
ENDM
;\1 = Map Width
;\2 = Rows above (Y-blocks)
;\3 = X movement (X-blocks)
EVENT_DISP: MACRO
- dw ($C6EF + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp
+ dw (wOverworldMap + 7 + (\1) + ((\1) + 6) * ((\2) >> 1) + ((\3) >> 1)) ; Ev.Disp
db \2,\3 ;Y,X
ENDM
@@ -77,7 +119,7 @@ tileset: MACRO
INDOOR EQU 0
CAVE EQU 1
OUTDOOR EQU 2
-
+
; macro for two nibbles
dn: MACRO
db (\1 << 4 | \2)
@@ -119,14 +161,30 @@ TX_RAM: MACRO
dw \1
ENDM
+TX_BCD: MACRO
+ db $2
+ dw \1
+ db \2
+ ENDM
+
; Predef macro.
-PREDEF: MACRO
- ld a, (\1 - PredefPointers) / 3
+add_predef: MACRO
+\1Predef::
+ db BANK(\1)
+ dw \1
+ ENDM
+
+predef_id: MACRO
+ ld a, (\1Predef - PredefPointers) / 3
+ ENDM
+
+predef: MACRO
+ predef_id \1
call Predef
ENDM
-
-PREDEF_JUMP: MACRO
- ld a, (\1 - PredefPointers) / 3
+
+predef_jump: MACRO
+ predef_id \1
jp Predef
ENDM
@@ -146,41 +204,6 @@ CH5 EQU 5
CH6 EQU 6
CH7 EQU 7
-;Note Pitch
-C_ EQU $0
-C# EQU $1
-D_ EQU $2
-D# EQU $3
-E_ EQU $4
-F_ EQU $5
-F# EQU $6
-G_ EQU $7
-G# EQU $8
-A_ EQU $9
-A# EQU $A
-B_ EQU $B
-
-;drum instruments
-snare1 EQU $01
-snare2 EQU $02
-snare3 EQU $03
-snare4 EQU $04
-snare5 EQU $05
-triangle1 EQU $06
-triangle2 EQU $07
-snare6 EQU $08
-snare7 EQU $09
-snare8 EQU $0a
-snare9 EQU $0b
-cymbal1 EQU $0c
-cymbal2 EQU $0d
-cymbal3 EQU $0e
-mutedsnare1 EQU $0f
-triangle3 EQU $10
-mutedsnare2 EQU $11
-mutedsnare3 EQU $12
-mutedsnare4 EQU $13
-
unknownsfx0x10: MACRO
db $10
db \1
@@ -199,15 +222,149 @@ unknownnoise0x20: MACRO
db \3
ENDM
-;format: note pitch, length (in 16ths)
-note: MACRO
- db (\1 << 4) | (\2 - 1)
+;format: pitch length (in 16ths)
+C_: MACRO
+ db $00 | (\1 - 1)
+ENDM
+
+C#: MACRO
+ db $10 | (\1 - 1)
+ENDM
+
+D_: MACRO
+ db $20 | (\1 - 1)
+ENDM
+
+D#: MACRO
+ db $30 | (\1 - 1)
+ENDM
+
+E_: MACRO
+ db $40 | (\1 - 1)
+ENDM
+
+F_: MACRO
+ db $50 | (\1 - 1)
+ENDM
+
+F#: MACRO
+ db $60 | (\1 - 1)
+ENDM
+
+G_: MACRO
+ db $70 | (\1 - 1)
+ENDM
+
+G#: MACRO
+ db $80 | (\1 - 1)
+ENDM
+
+A_: MACRO
+ db $90 | (\1 - 1)
ENDM
-;format: dnote length (in 16ths), instrument
-dnote: MACRO
+A#: MACRO
+ db $A0 | (\1 - 1)
+ENDM
+
+B_: MACRO
db $B0 | (\1 - 1)
- db \2
+ENDM
+
+;format: instrument length (in 16ths)
+snare1: MACRO
+ db $B0 | (\1 - 1)
+ db $01
+ENDM
+
+snare2: MACRO
+ db $B0 | (\1 - 1)
+ db $02
+ENDM
+
+snare3: MACRO
+ db $B0 | (\1 - 1)
+ db $03
+ENDM
+
+snare4: MACRO
+ db $B0 | (\1 - 1)
+ db $04
+ENDM
+
+snare5: MACRO
+ db $B0 | (\1 - 1)
+ db $05
+ENDM
+
+triangle1: MACRO
+ db $B0 | (\1 - 1)
+ db $06
+ENDM
+
+triangle2: MACRO
+ db $B0 | (\1 - 1)
+ db $07
+ENDM
+
+snare6: MACRO
+ db $B0 | (\1 - 1)
+ db $08
+ENDM
+
+snare7: MACRO
+ db $B0 | (\1 - 1)
+ db $09
+ENDM
+
+snare8: MACRO
+ db $B0 | (\1 - 1)
+ db $0A
+ENDM
+
+snare9: MACRO
+ db $B0 | (\1 - 1)
+ db $0B
+ENDM
+
+cymbal1: MACRO
+ db $B0 | (\1 - 1)
+ db $0C
+ENDM
+
+cymbal2: MACRO
+ db $B0 | (\1 - 1)
+ db $0D
+ENDM
+
+cymbal3: MACRO
+ db $B0 | (\1 - 1)
+ db $0E
+ENDM
+
+mutedsnare1: MACRO
+ db $B0 | (\1 - 1)
+ db $0F
+ENDM
+
+triangle3: MACRO
+ db $B0 | (\1 - 1)
+ db $10
+ENDM
+
+mutedsnare2: MACRO
+ db $B0 | (\1 - 1)
+ db $11
+ENDM
+
+mutedsnare3: MACRO
+ db $B0 | (\1 - 1)
+ db $12
+ENDM
+
+mutedsnare4: MACRO
+ db $B0 | (\1 - 1)
+ db $13
ENDM
;format: rest length (in 16ths)
@@ -229,7 +386,7 @@ octave: MACRO
db $E8 - \1
ENDM
-togglecall: MACRO
+toggleperfectpitch: MACRO
db $E8
ENDM
@@ -253,18 +410,18 @@ ENDM
tempo: MACRO
db $ED
- db \1
- db \2
+ db \1 / $100
+ db \1 % $100
ENDM
-unknownmusic0xee: MACRO
+stereopanning: MACRO
db $EE
db \1
ENDM
-stereopanning: MACRO
+volume: MACRO
db $F0
- db \1
+ db (\1 << 4) | \2
ENDM
executemusic: MACRO
@@ -293,6 +450,7 @@ endchannel: MACRO
db $FF
ENDM
+
;\1 (byte) = connected map id
;\2 (byte) = connected map width
;\3 (byte) = connected map height
@@ -303,12 +461,12 @@ ENDM
NORTH_MAP_CONNECTION: MACRO
db \1 ; map id
dw \7 + (\2 * (\3 - 3)) + \5; "Connection Strip" location
- dw $C6EB + \4 ; current map position
+ dw wOverworldMap + 3 + \4 ; current map position
db \6 ; width of connection strip
db \2 ; map width
db (\3 * 2) - 1 ; y alignment (y coordinate of player when entering map)
db (\4 - \5) * -2 ; x alignment (x coordinate of player when entering map)
- dw $C6E9 + (\3 * (\2 + 6)) ; window (position of the upper left block after entering the map)
+ dw wOverworldMap + 1 + (\3 * (\2 + 6)) ; window (position of the upper left block after entering the map)
ENDM
;\1 (byte) = connected map id
@@ -322,12 +480,12 @@ ENDM
SOUTH_MAP_CONNECTION: MACRO
db \1 ; map id
dw \6 + \4 ; "Conection Strip" location
- dw $C6EB + (\8 + 3) * (\7 + 6) + \3 ; current map positoin
+ dw wOverworldMap + 3 + (\8 + 3) * (\7 + 6) + \3 ; current map positoin
db \5 ; width of connection strip
db \2 ; map width
db 0 ; y alignment (y coordinate of player when entering map)
db (\3 - \4) * -2 ; x alignment (x coordinate of player when entering map)
- dw $C6EF + \2 ; window (position of the upper left block after entering the map)
+ dw wOverworldMap + 7 + \2 ; window (position of the upper left block after entering the map)
ENDM
;\1 (byte) = connected map id
@@ -340,12 +498,12 @@ ENDM
EAST_MAP_CONNECTION: MACRO
db \1 ; map id
dw \6 + (\2 * \4) ; "Connection Strip" location
- dw $C6E5 + (\7 + 6) * (\3 + 4) ; current map position
+ dw wOverworldMap - 3 + (\7 + 6) * (\3 + 4) ; current map position
db \5 ; height of connection strip
db \2 ; map width
db (\3 - \4) * -2 ; y alignment
db 0 ; x alignment
- dw $C6EF + \2 ; window (position of the upper left block after entering the map)
+ dw wOverworldMap + 7 + \2 ; window (position of the upper left block after entering the map)
ENDM
;\1 (byte) = connected map id
@@ -358,10 +516,10 @@ ENDM
WEST_MAP_CONNECTION: MACRO
db \1 ; map id
dw \6 + (\2 * \4) + \2 - 3 ; "Connection Strip" location
- dw $C6E8 + (\7 + 6) * (\3 + 3) ; current map position
+ dw wOverworldMap + (\7 + 6) * (\3 + 3) ; current map position
db \5 ; height of connection strip
db \2 ; map width
db (\3 - \4) * -2 ; y alignment
db (\2 * 2) - 1 ; x alignment
- dw $C6EE + (2 * \2) ; window (position of the upper left block after entring the map)
+ dw wOverworldMap + 6 + (2 * \2) ; window (position of the upper left block after entring the map)
ENDM