summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rwxr-xr-xmacros/asm_macros.asm6
-rwxr-xr-xmacros/audio_macros.asm8
-rw-r--r--[-rwxr-xr-x]macros/event_macros.asm61
3 files changed, 67 insertions, 8 deletions
diff --git a/macros/asm_macros.asm b/macros/asm_macros.asm
index d3f00b0c..7012d7e1 100755
--- a/macros/asm_macros.asm
+++ b/macros/asm_macros.asm
@@ -7,12 +7,10 @@ homecall: MACRO
ld a, [H_LOADEDROMBANK]
push af
ld a, BANK(\1)
- ld [H_LOADEDROMBANK], a
- ld [MBC1RomBank], a
+ call BankswitchCommon
call \1
pop af
- ld [H_LOADEDROMBANK], a
- ld [MBC1RomBank], a
+ call BankswitchCommon
ENDM
farcall EQUS "callba"
diff --git a/macros/audio_macros.asm b/macros/audio_macros.asm
index 95b9ecbc..6daadbc6 100755
--- a/macros/audio_macros.asm
+++ b/macros/audio_macros.asm
@@ -1,8 +1,8 @@
-StopAllMusic: MACRO
- ld a, $ff
- call PlaySound
-ENDM
+;StopAllMusic: MACRO
+; ld a, $ff
+; call PlaySound
+;ENDM
Ch1 EQU 0
Ch2 EQU 1
diff --git a/macros/event_macros.asm b/macros/event_macros.asm
index 20027209..a3ce9746 100755..100644
--- a/macros/event_macros.asm
+++ b/macros/event_macros.asm
@@ -57,6 +57,16 @@ event_byte = ((\2) / 8)
ld \1, wEventFlags + event_byte
ENDM
+EventFlagAddressa: MACRO
+event_byte = ((\1) / 8)
+ ld [wEventFlags + event_byte], a
+ ENDM
+
+aEventFlagAddress: MACRO
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+ ENDM
+
;\1 = event index
CheckEventHL: MACRO
event_byte = ((\1) / 8)
@@ -125,6 +135,27 @@ CheckAndResetEventA: MACRO
ld [wEventFlags + ((\1) / 8)], a
ENDM
+CheckAndSetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ set (\1) % 8, [hl]
+ ENDM
+
+CheckAndResetEventReuseHL: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld hl, wEventFlags + event_byte
+ ENDC
+
+ bit (\1) % 8, [hl]
+ res (\1) % 8, [hl]
+ ENDM
+
+
;\1 = event index
SetEvent: MACRO
event_byte = ((\1) / 8)
@@ -431,6 +462,36 @@ CheckEitherEventSet: MACRO
ENDC
ENDM
+CheckEitherEventSetReuseA: MACRO
+ IF event_byte != ((\1) / 8)
+event_byte = ((\1) / 8)
+ ld a, [wEventFlags + event_byte]
+ ENDC
+ IF ((\1) / 8) == ((\2) / 8)
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8)) | (1 << ((\2) % 8))
+ ELSE
+ ; This case doesn't happen in the original ROM.
+ IF ((\1) % 8) == ((\2) % 8)
+ push hl
+ ld a, [wEventFlags + ((\1) / 8)]
+ ld hl, wEventFlags + ((\2) / 8)
+ or [hl]
+ bit ((\1) % 8), a
+ pop hl
+ ELSE
+ push bc
+ ld a, [wEventFlags + ((\1) / 8)]
+ and (1 << ((\1) % 8))
+ ld b, a
+ ld a, [wEventFlags + ((\2) / 8)]
+ and (1 << ((\2) % 8))
+ or b
+ pop bc
+ ENDC
+ ENDC
+ ENDM
+
; for handling fixed event bits when events are inserted/removed
;\1 = event index
;\2 = fixed flag bit