scroll left and right work in stdef and hidef adds octo test roms adds schip fonts to memory
216 lines
8.0 KiB
Plaintext
216 lines
8.0 KiB
Plaintext
###########################################
|
|
#
|
|
# Grad School Simulator 2014
|
|
#
|
|
# "Welcome to the sunless depths of my ennui."
|
|
#
|
|
###########################################
|
|
|
|
: main
|
|
hires
|
|
draw-background
|
|
loop
|
|
do-behavior
|
|
again
|
|
|
|
: do-behavior
|
|
# by AND masking an 8 bit value with 0b1110
|
|
# we can create the numbers 0,2,4,8,10,12,14,16:
|
|
v0 := random 0b1110
|
|
jump0 behavior-table
|
|
|
|
: behavior-table
|
|
# this is a jump table. Each entry
|
|
# is 1 instruction long, or 2 bytes:
|
|
jump blink
|
|
jump blink
|
|
jump idle
|
|
jump idle
|
|
jump grimace
|
|
jump show-icon
|
|
jump show-icon
|
|
jump show-icon
|
|
|
|
# here I've overlapped two subroutines,
|
|
# since they share the same ending instructions:
|
|
: blink
|
|
blink-toggle
|
|
vf := 10 wait
|
|
blink-toggle
|
|
: idle
|
|
vf := 45 wait
|
|
;
|
|
|
|
: blink-toggle
|
|
i := blink-mask
|
|
v0 := 55
|
|
v1 := 26
|
|
sprite v0 v1 3
|
|
v0 := 65
|
|
v1 := 26
|
|
sprite v0 v1 3
|
|
;
|
|
|
|
: wait
|
|
# takes a time argument in vf.
|
|
# vf gets destroyed by +/-/>>/<</sprite
|
|
# so we can freely use it as a temp value.
|
|
delay := vf
|
|
loop
|
|
vf := delay
|
|
if vf != 0 then
|
|
again
|
|
;
|
|
|
|
: grimace
|
|
i := grimace-mask
|
|
v0 := 59
|
|
v1 := 37
|
|
sprite v0 v1 1
|
|
jump idle
|
|
|
|
: blink-mask
|
|
# this is carefully designed to xor with
|
|
# the base image and toggle eye blinks:
|
|
0x60 0x60 0xF0
|
|
|
|
: grimace-mask
|
|
# same idea as blink-mask:
|
|
0x1C
|
|
|
|
|
|
: show-icon
|
|
icon-setup
|
|
draw-icon
|
|
v1 += -1
|
|
draw-icon
|
|
v1 += 1
|
|
draw-icon
|
|
v1 += -1
|
|
draw-icon
|
|
jump idle
|
|
|
|
: draw-icon
|
|
sprite v1 v2 0
|
|
vf := 10 wait
|
|
sprite v1 v2 0
|
|
;
|
|
|
|
: icon-setup
|
|
# by AND masking an 8 bit value with 0b11000
|
|
# we can create the numbers 0, 8, 16 or 24:
|
|
v0 := random 0b11000
|
|
jump0 icon-setup-table
|
|
|
|
: icon-setup-table
|
|
# this is a jump table. Each entry
|
|
# is 4 instructions long, or 8 bytes:
|
|
v1 := 27 v2 := 16 i := hungry ;
|
|
v1 := 27 v2 := 16 i := cold ;
|
|
v1 := 80 v2 := 16 i := tired ;
|
|
v1 := 80 v2 := 16 i := busy ;
|
|
|
|
: hungry # (left side)
|
|
0x1F 0x20 0x20 0xD8 0x50 0x06 0xC0 0x02
|
|
0x95 0x24 0x95 0x62 0x9F 0x64 0x4E 0x63
|
|
0x84 0x21 0x84 0x22 0xC4 0x24 0x84 0x24
|
|
0x81 0x02 0x58 0xD2 0x27 0x24 0x00 0x38
|
|
: cold # (left side)
|
|
0x3F 0xE0 0x40 0x10 0x8C 0x68 0x92 0x08
|
|
0x92 0x68 0x92 0x08 0x92 0x68 0x92 0x08
|
|
0x92 0x68 0x92 0x08 0xA1 0x68 0xBF 0x08
|
|
0xBF 0x08 0x9E 0x07 0x40 0x02 0x3F 0xFC
|
|
: tired # (right side)
|
|
0x3F 0x80 0x40 0x4C 0xBF 0x2A 0x9F 0x24
|
|
0x46 0x10 0x4C 0x0C 0x9F 0x02 0xBF 0x02
|
|
0x80 0x79 0x84 0x31 0xA0 0x61 0x82 0xF9
|
|
0x40 0x02 0x26 0x3C 0x29 0xC0 0x70 0x00
|
|
: busy # (right side)
|
|
0x0F 0xE0 0x30 0x10 0x47 0x88 0x47 0x84
|
|
0x88 0x44 0x91 0x24 0x91 0x24 0x97 0x24
|
|
0x90 0x24 0x88 0x44 0x47 0x88 0x47 0x88
|
|
0x20 0x10 0x27 0xE0 0x28 0x00 0x70 0x00
|
|
|
|
: draw-background
|
|
i := background
|
|
v0 := 1 # sprite stride
|
|
v1 := 0 # sprite x
|
|
v2 := 0 # sprite y
|
|
loop
|
|
# I could draw this in larger chunks by packing
|
|
# the data differently, but I like vertical wipes:
|
|
sprite v1 v2 1
|
|
i += v0
|
|
v1 += 8
|
|
if v1 == 128 then v2 += 1
|
|
if v1 == 128 then v1 := 0
|
|
if v2 != 64 then
|
|
again
|
|
;
|
|
|
|
: background
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x7C 0x00 0x00 0x00 0x78 0x00 0x00 0x00 0x07 0x80 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0xFE 0x00 0x00 0x00 0xFC 0x06 0x00 0x00 0x0F 0xD8 0x00 0x00 0x00 0x00 0x00
|
|
0x01 0xC6 0x00 0x00 0x00 0xCC 0x06 0x00 0x06 0x0C 0xD8 0x00 0x0C 0x00 0x00 0x00
|
|
0x01 0x86 0x00 0x00 0xE0 0xC0 0x0C 0x00 0x06 0x0C 0x00 0x00 0x0C 0x03 0x00 0x00
|
|
0x03 0x80 0xE3 0xC0 0xC0 0xE1 0x8E 0x18 0xCC 0x0E 0x37 0x66 0xD9 0xE3 0x31 0xC0
|
|
0x03 0x3C 0xF0 0xE7 0xC0 0x73 0xDF 0x3D 0xEC 0x07 0x37 0xF6 0xD8 0x7F 0xF9 0xE0
|
|
0x03 0x3D 0xB7 0xEB 0x80 0x37 0x1B 0x2D 0x78 0x03 0x6D 0x6C 0xB3 0xF6 0x5B 0x60
|
|
0x03 0x19 0xBC 0xDB 0x83 0x36 0x3B 0x6F 0x78 0x33 0x6D 0x6D 0xB6 0x66 0xDB 0x60
|
|
0x03 0xFB 0x0F 0xDF 0x03 0xF7 0xB6 0x7B 0xD8 0x3F 0xD8 0xCD 0xB7 0xEC 0xF6 0x00
|
|
0x01 0xF3 0x07 0x8F 0x01 0xE3 0x37 0x31 0x9C 0x1E 0xD8 0xCF 0x3B 0xCE 0xE6 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xE4 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x03 0xFF 0xF8 0x20 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x07 0xFF 0xFF 0xC0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x07 0xFF 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x1F 0xFF 0xFF 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x3F 0xFF 0xFF 0xC0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x7F 0xFF 0xFF 0xE0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0xBC 0xFF 0x87 0xF0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x7C 0x3F 0xE7 0xF0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x78 0x03 0xE3 0xB0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x78 0x00 0x03 0xA0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x78 0x09 0x03 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0xF1 0xF1 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0xFF 0xF0 0xFE 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0xDC 0xDF 0xB2 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x5C 0xD0 0xB2 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x54 0x10 0x82 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x74 0x30 0xC3 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x37 0xF0 0xFF 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x11 0xD0 0xBA 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x08 0x10 0x82 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x08 0x0F 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x00 0x04 0x00 0x02 0x00 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x03 0xFC 0x00 0x07 0x80 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x06 0xAA 0x00 0x06 0xC0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x0D 0x55 0x1C 0x0D 0x60 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x1A 0xAF 0xC0 0x3A 0xB0 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x1D 0x7F 0x7F 0xFD 0x70 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x3A 0xFA 0x31 0xFE 0xB8 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x35 0xD0 0x5F 0x57 0x58 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x2B 0xA4 0x20 0x83 0xA8 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x75 0x00 0x1F 0x0B 0x5C 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x6B 0xA0 0x0E 0x02 0xAC 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x77 0x00 0x04 0x00 0xDC 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0x6A 0x00 0x00 0x01 0xAC 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xF7 0x00 0x00 0x00 0x5E 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xEC 0x00 0x00 0x00 0xFE 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xF4 0x02 0x00 0x00 0x3E 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xF9 0xC0 0x00 0x0D 0xDE 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xFE 0x30 0x00 0x12 0x36 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0x00 0x00 0x00 0x00 0x00 0xF8 0x50 0x00 0x53 0x9E 0x00 0x00 0x00 0x00 0x00 0x00
|
|
0xFF 0xFF 0xFF 0xFF 0xFF 0xE0 0xC9 0x00 0x24 0x43 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
|
|
0x00 0x00 0x84 0x00 0x00 0xD9 0x48 0x01 0x24 0xC0 0x80 0x00 0x10 0x00 0x00 0x00
|
|
0x00 0x20 0x00 0x03 0xC1 0xB3 0x24 0x00 0x29 0x22 0x40 0x60 0x00 0x80 0x00 0x04
|
|
0x00 0x00 0x00 0x04 0x21 0x76 0xA7 0xFF 0xF2 0x31 0xA0 0x00 0x00 0x00 0x00 0x40
|
|
0x00 0x00 0x7F 0xFB 0x1F 0xFE 0x9D 0x99 0x9E 0xF8 0xFF 0xFF 0xF0 0x00 0x00 0x00
|
|
0x55 0x55 0x80 0xDA 0xB8 0x7E 0x7A 0x66 0x67 0xFF 0xE0 0x08 0x0E 0xAA 0xAA 0xAA
|
|
0xFF 0xFE 0x61 0x17 0xF0 0xF5 0x9D 0x99 0x99 0xB4 0x07 0xFE 0x7B 0xFF 0xFF 0xFF
|
|
0xFF 0xF8 0x32 0x20 0x01 0x08 0x00 0x00 0x00 0x02 0x78 0x01 0x8C 0xFF 0xFF 0xFF
|
|
0xFF 0xE1 0x04 0x20 0x06 0x47 0xFF 0xFF 0xFF 0xFC 0x23 0xFC 0xE3 0x3F 0xFF 0xFF
|
|
0xFF 0x80 0x83 0xFF 0xF9 0xC0 0x14 0x00 0x08 0x00 0x18 0x00 0x19 0x0F 0xFF 0xFF
|
|
0xFF 0xF8 0x00 0x04 0x03 0x80 0x28 0x07 0xFF 0xE2 0x04 0xBF 0x8E 0xDF 0xFF 0xFF
|