ld [IE], a
di
ret
+
+ ; call a function from a table
+ ; inputs:
+ ; a: table index
+ ; [hl]: pointer to function ptr table
+ ; Note: do not call, just jp
+call_tbl:
+ sla a ; * 2
+ ld d, 0
+ ld e, a
+ add hl, de ; hl + index * 2
+
+ ; hl = ptr to update routine
+ ; => load functon ptr into hl
+ ld a, [hl+]
+ ld d, a
+ ld a, [hl]
+ ld l, d
+ ld h, a
+ ; hl = function value
+ jp hl
+
inc a
ld [frame_count], a
- ld a, [game_mode]
- sla a ; * 2
- ld d, 0
- ld e, a
ld hl, update_table
- add hl, de ; hl + index * 2
-
- ; hl = ptr to update routine
- ; => load functon ptr into hl
- ld a, [hl+]
- ld d, a
- ld a, [hl]
- ld l, d
- ld h, a
- ; hl = function value
- jp hl
+ ld a, [game_mode]
+ jp call_tbl
+