aoc_omni/gb/2015/1/not_quite_lisp.asm

142 lines
1.8 KiB
NASM
Raw Normal View History

2024-12-29 08:29:02 -05:00
INCLUDE "lib/hardware.inc"
INCLUDE "lib/macros.inc"
SECTION "VBlank Interrupt", ROM0[$40]
jp VBlankHandler
SECTION "Header", ROM0[$100]
jp EntryPoint
ds $150 - @, 0 ; Make room for the header
SECTION "Init", ROM0[$150]
EntryPoint:
StartInit
ClearScreen
ClearOAM
LoadTiles
2024-12-29 12:51:16 -05:00
MemClear current_frame, 1
MemClear current_floor, 2
MemClear done_flag, 1
;; Initialize input_index
ld bc, input
ld a, b
ld [input_index], a
ld a, c
ld [input_index + 1], a
2024-12-29 08:29:02 -05:00
FinishInit
ei
2024-12-29 12:51:16 -05:00
CheckInput:
ld a, [input_index]
ld h, a
ld a, [input_index + 1]
ld l, a
ld a, [hl]
cp a, "("
jr z, GoingUp
jr GoingDown
GoingUp:
call IncrementCurrentFloor
jr GoingNowhere
GoingDown:
call DecrementCurrentFloor
GoingNowhere:
IncrementWord input_index
ld de, input_end
ld a, [input_index]
sub a, d
jr nz, CheckInput
ld a, [input_index + 1]
sub a, e
jr nz, CheckInput
ld a, 1
ld [done_flag], a
Done:
2024-12-29 08:29:02 -05:00
halt
nop
jr Done
2024-12-29 12:51:16 -05:00
IncrementCurrentFloor:
ld hl, current_floor
ld a, [hli]
ld b, a
ld a, [hli]
ld c, a
inc bc
ld hl, current_floor
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ret
DecrementCurrentFloor:
ld hl, current_floor
ld a, [hli]
ld b, a
ld a, [hli]
ld c, a
dec bc
ld hl, current_floor
ld a, b
ld [hli], a
ld a, c
ld [hli], a
ret
ret
2024-12-29 08:29:02 -05:00
VBlankHandler:
2024-12-29 12:51:16 -05:00
push AF
push BC
push DE
push HL
IncrementFrameCount
PrintByteHex current_frame, 0, 0
PrintByte current_frame, 0, 1
PrintByteHex current_floor, 0, 2
PrintByteHex current_floor + 1, 2, 2
ld a, [done_flag]
cp a, 1
jr z, NotDone
PrintString done_string, 3, 3
NotDone:
pop HL
pop DE
pop BC
pop AF
2024-12-29 08:29:02 -05:00
reti
SECTION "High RAM", HRAM
current_floor: DS 2
2024-12-29 12:51:16 -05:00
done_flag: DS 1
2024-12-29 08:29:02 -05:00
SECTION "Input", ROM0
input:
INCBIN "../data/2015/1/input.txt"
input_end:
2024-12-29 12:51:16 -05:00
done_string:
db "Done", 0
done_string_end:
2024-12-29 08:29:02 -05:00
INCLUDE "lib/tiles.asm"