add new loader
This commit is contained in:
parent
cfceee4db3
commit
ec555efafd
@ -3,7 +3,7 @@
|
|||||||
<plist version="1.0">
|
<plist version="1.0">
|
||||||
<dict>
|
<dict>
|
||||||
<key>currentDocument</key>
|
<key>currentDocument</key>
|
||||||
<string>avr/usbload/shell.c</string>
|
<string>avr/usbload/main.c</string>
|
||||||
<key>documents</key>
|
<key>documents</key>
|
||||||
<array>
|
<array>
|
||||||
<dict>
|
<dict>
|
||||||
@ -28,12 +28,28 @@
|
|||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>141</integer>
|
<integer>88</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>columnSelection</key>
|
||||||
|
<false/>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>94</integer>
|
<integer>56</integer>
|
||||||
|
<key>selectFrom</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>56</integer>
|
||||||
|
</dict>
|
||||||
|
<key>selectTo</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>88</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/command.h</key>
|
<key>avr/usbload/command.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -138,30 +154,14 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>10</integer>
|
<integer>1</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>53</integer>
|
<integer>62</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>columnSelection</key>
|
|
||||||
<false/>
|
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>25</integer>
|
<integer>24</integer>
|
||||||
<key>selectFrom</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>5</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>53</integer>
|
|
||||||
</dict>
|
|
||||||
<key>selectTo</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>22</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>53</integer>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/irq.h</key>
|
<key>avr/usbload/irq.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -198,9 +198,9 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>80</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>18</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
@ -214,26 +214,42 @@
|
|||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>74</integer>
|
<integer>299</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>columnSelection</key>
|
||||||
|
<false/>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>46</integer>
|
<integer>190</integer>
|
||||||
|
<key>selectFrom</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>292</integer>
|
||||||
|
</dict>
|
||||||
|
<key>selectTo</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>299</integer>
|
||||||
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/pwm.c</key>
|
<key>avr/usbload/pwm.c</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>25</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>32</integer>
|
<integer>100</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>20</integer>
|
<integer>33</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/pwm.h</key>
|
<key>avr/usbload/pwm.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -254,14 +270,14 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>20</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>56</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>9</integer>
|
<integer>13</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/rle.c</key>
|
<key>avr/usbload/rle.c</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -312,30 +328,14 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>14</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>70</integer>
|
<integer>235</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>columnSelection</key>
|
|
||||||
<false/>
|
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>61</integer>
|
<integer>210</integer>
|
||||||
<key>selectFrom</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>64</integer>
|
|
||||||
</dict>
|
|
||||||
<key>selectTo</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>70</integer>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/shared_memory.h</key>
|
<key>avr/usbload/shared_memory.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -358,12 +358,12 @@
|
|||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>43</integer>
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>30</integer>
|
<integer>289</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/shell.h</key>
|
<key>avr/usbload/shell.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -384,30 +384,56 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>22</integer>
|
<integer>9</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>287</integer>
|
<integer>36</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>columnSelection</key>
|
|
||||||
<false/>
|
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>215</integer>
|
<integer>3</integer>
|
||||||
<key>selectFrom</key>
|
</dict>
|
||||||
|
<key>avr/usbload/sram.h</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>5</integer>
|
<integer>9</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>287</integer>
|
<integer>198</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>selectTo</key>
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>178</integer>
|
||||||
|
</dict>
|
||||||
|
<key>avr/usbload/system.c</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>31</integer>
|
<integer>0</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>287</integer>
|
<integer>85</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>48</integer>
|
||||||
|
</dict>
|
||||||
|
<key>avr/usbload/system.h</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>25</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/timer.c</key>
|
<key>avr/usbload/timer.c</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -456,30 +482,14 @@
|
|||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>column</key>
|
<key>column</key>
|
||||||
<integer>0</integer>
|
<integer>14</integer>
|
||||||
<key>line</key>
|
<key>line</key>
|
||||||
<integer>43</integer>
|
<integer>71</integer>
|
||||||
</dict>
|
</dict>
|
||||||
<key>columnSelection</key>
|
|
||||||
<false/>
|
|
||||||
<key>firstVisibleColumn</key>
|
<key>firstVisibleColumn</key>
|
||||||
<integer>0</integer>
|
<integer>0</integer>
|
||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>16</integer>
|
<integer>36</integer>
|
||||||
<key>selectFrom</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>42</integer>
|
|
||||||
</dict>
|
|
||||||
<key>selectTo</key>
|
|
||||||
<dict>
|
|
||||||
<key>column</key>
|
|
||||||
<integer>0</integer>
|
|
||||||
<key>line</key>
|
|
||||||
<integer>43</integer>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
</dict>
|
||||||
<key>avr/usbload/usb_bulk.h</key>
|
<key>avr/usbload/usb_bulk.h</key>
|
||||||
<dict>
|
<dict>
|
||||||
@ -579,6 +589,48 @@
|
|||||||
<key>firstVisibleLine</key>
|
<key>firstVisibleLine</key>
|
||||||
<integer>211</integer>
|
<integer>211</integer>
|
||||||
</dict>
|
</dict>
|
||||||
|
<key>tools/qdinc/opendevice.h</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>tools/qdinc/qdinc.c</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>26</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>15</integer>
|
||||||
|
</dict>
|
||||||
|
<key>tools/qdinc/qdinc.h</key>
|
||||||
|
<dict>
|
||||||
|
<key>caret</key>
|
||||||
|
<dict>
|
||||||
|
<key>column</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>line</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
</dict>
|
||||||
|
<key>firstVisibleColumn</key>
|
||||||
|
<integer>0</integer>
|
||||||
|
<key>firstVisibleLine</key>
|
||||||
|
<integer>3</integer>
|
||||||
|
</dict>
|
||||||
<key>tools/ucon64/src/backup/quickdev16.c</key>
|
<key>tools/ucon64/src/backup/quickdev16.c</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>caret</key>
|
<key>caret</key>
|
||||||
@ -642,6 +694,11 @@
|
|||||||
<array>
|
<array>
|
||||||
<string>avr/usbload/sram.c</string>
|
<string>avr/usbload/sram.c</string>
|
||||||
<string>avr/usbload/main.c</string>
|
<string>avr/usbload/main.c</string>
|
||||||
|
<string>tools/qdinc/qdinc.c</string>
|
||||||
|
<string>tools/qdinc/opendevice.h</string>
|
||||||
|
<string>tools/qdinc/qdinc.h</string>
|
||||||
|
<string>avr/usbload/system.h</string>
|
||||||
|
<string>avr/usbload/sram.h</string>
|
||||||
<string>avr/usbload/usb_bulk.c</string>
|
<string>avr/usbload/usb_bulk.c</string>
|
||||||
<string>avr/usbload/usbconfig.h</string>
|
<string>avr/usbload/usbconfig.h</string>
|
||||||
<string>avr/usbload/requests.h</string>
|
<string>avr/usbload/requests.h</string>
|
||||||
@ -658,6 +715,7 @@
|
|||||||
<string>scripts/check_rle.py</string>
|
<string>scripts/check_rle.py</string>
|
||||||
<string>avr/usbload/pwm.h</string>
|
<string>avr/usbload/pwm.h</string>
|
||||||
<string>avr/usbload/shared_memory.c</string>
|
<string>avr/usbload/shared_memory.c</string>
|
||||||
|
<string>avr/usbload/system.c</string>
|
||||||
<string>avr/usbload/command.c</string>
|
<string>avr/usbload/command.c</string>
|
||||||
<string>avr/usbload/command.h</string>
|
<string>avr/usbload/command.h</string>
|
||||||
<string>avr/usbload/irq.c</string>
|
<string>avr/usbload/irq.c</string>
|
||||||
@ -715,19 +773,14 @@
|
|||||||
<true/>
|
<true/>
|
||||||
<key>subItems</key>
|
<key>subItems</key>
|
||||||
<dict>
|
<dict>
|
||||||
|
<key>qdinc</key>
|
||||||
|
<dict>
|
||||||
|
<key>isExpanded</key>
|
||||||
|
<true/>
|
||||||
|
<key>subItems</key>
|
||||||
|
<dict/>
|
||||||
|
</dict>
|
||||||
<key>ucon64</key>
|
<key>ucon64</key>
|
||||||
<dict>
|
|
||||||
<key>isExpanded</key>
|
|
||||||
<true/>
|
|
||||||
<key>subItems</key>
|
|
||||||
<dict>
|
|
||||||
<key>src</key>
|
|
||||||
<dict>
|
|
||||||
<key>isExpanded</key>
|
|
||||||
<true/>
|
|
||||||
<key>subItems</key>
|
|
||||||
<dict>
|
|
||||||
<key>console</key>
|
|
||||||
<dict>
|
<dict>
|
||||||
<key>isExpanded</key>
|
<key>isExpanded</key>
|
||||||
<true/>
|
<true/>
|
||||||
@ -739,10 +792,6 @@
|
|||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
</dict>
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
</dict>
|
|
||||||
<key>windowFrame</key>
|
<key>windowFrame</key>
|
||||||
<string>{{0, 72}, {936, 806}}</string>
|
<string>{{0, 72}, {936, 806}}</string>
|
||||||
</dict>
|
</dict>
|
||||||
|
|||||||
26
snes/qd16/makefile
Executable file
26
snes/qd16/makefile
Executable file
@ -0,0 +1,26 @@
|
|||||||
|
# 65816 stuff
|
||||||
|
ROMFILE = qd16boot.smc
|
||||||
|
VPATH = routines/
|
||||||
|
AC = wla-65816
|
||||||
|
AFLAGS = -o
|
||||||
|
LD = wlalink
|
||||||
|
LDFLAGS = -vdsr
|
||||||
|
FL = snesflash
|
||||||
|
FLFLAGS = -wf
|
||||||
|
sources := $(wildcard routines/*.asm)
|
||||||
|
objects := $(patsubst %.asm,%.o,$(sources))
|
||||||
|
linkfile := linkobjs.lst
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
all: $(objects)
|
||||||
|
$(LD) $(LDFLAGS) $(linkfile) $(ROMFILE)
|
||||||
|
|
||||||
|
$(objects): $(sources)
|
||||||
|
$(AC) $(AFLAGS) $(patsubst %.o,%.asm,$@) $@
|
||||||
|
|
||||||
|
flash:
|
||||||
|
$(FL) $(FLFLAGS) $(ROMFILE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(ROMFILE) $(objects) core *~ *.sym *.srm
|
||||||
321
snes/qd16/routines/defines.h
Executable file
321
snes/qd16/routines/defines.h
Executable file
@ -0,0 +1,321 @@
|
|||||||
|
; .include "routines/main.h"
|
||||||
|
;*************************************************************************
|
||||||
|
.define DEBUG 1 ;enable debugmenu
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
.define BaseAdress $7f0000
|
||||||
|
.define HEADER_OFF $8000
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;spc interface definitions:
|
||||||
|
.define SpcFrameSize 144
|
||||||
|
.define SpcFramesPerBank 455
|
||||||
|
|
||||||
|
.define SpcCmdUploadSong $f1 ;indicates that a song is to be uploaded
|
||||||
|
.define SpcCmdUploadSongT1 $f2 ;indicates that data for transfer1 is on apu ports
|
||||||
|
.define SpcCmdUploadSongT2 $f3 ;indicates that data for transfer2 is on apu ports
|
||||||
|
.define SpcCmdUploadSongDone $f4 ;indicates that song upload is complete
|
||||||
|
.define SpcCmdReceiveStream $f5 ;indicates that 65816 wants to stream brr data to spc
|
||||||
|
.define SpcCmdSubmitStreamNumber $f7 ;indicates that hdma transfer has started. It's important that bit0 of this command is set.(brr end bit)
|
||||||
|
.define SpcCmdReceiveStreamComplete $f6 ;spc wants to end stream transmission.
|
||||||
|
.define SpcCmdUploadSamplePack $f8 ;indicates that a sample pack is to be uploaded. the rest of the commands are taken from normal song upload
|
||||||
|
.define SpcCmdUploadSamplePackDone $f9 ;indicates that sample pack upload is complete
|
||||||
|
.define SpcCmdPlaySoundEffect $fa ;play a sound effect
|
||||||
|
.define SpcCmdStopSong $fb ;stop song or stream
|
||||||
|
.define SpcCmdSetSongSpeed $fc ;set timer speed of mod playback routine
|
||||||
|
.define SpcCmdSetSongChMask $fd ;song channel mask
|
||||||
|
.define SpcCmdReportType $fe ;type of data spc should respond with
|
||||||
|
|
||||||
|
.define SpcScanlineWaitCount 5 ;amount of scanlines to wait before frame send
|
||||||
|
|
||||||
|
;spc fifo commands for other routines to write to
|
||||||
|
.define SpcFifoCmdUploadSong $02 ;arg 0 is song number
|
||||||
|
.define SpcFifoCmdUploadSamplePack $04 ;arg 0 is song number
|
||||||
|
.define SpcFifoCmdStreamBrr $06 ;arg 0 is stream frameset number
|
||||||
|
.define SpcFifoCmdPlaySE $08 ;arg 0 is stream frameset number
|
||||||
|
.define SpcFifoCmdStopSong $0a ;arg 0 is stream frameset number
|
||||||
|
.define SpcFifoCmdSetSpeed $0c ;arg 0 is speed
|
||||||
|
.define SpcFifoCmdSetChMask $0e ;arg 0 is mask
|
||||||
|
.define SpcFifoCmdSetReportType $10 ;arg 0 is mask, arg 1 used for some report types(instruments etc)
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;background settings
|
||||||
|
.define FontVramOffset $2500 ;$2800 ;vram offset of the font, starting tile index is $180
|
||||||
|
.define FontTileConfig $20 ;priority bit set, tiles $100+, palette 1
|
||||||
|
|
||||||
|
.define TileBufferSizeX 28 ;number of tiles in tilebuffer per x-line
|
||||||
|
.define TileBufferSizeY 26 ;number of tiles in tilebuffer per y-line
|
||||||
|
|
||||||
|
.define TileMapSizeX 31 ;number of tiles in tilebuffer per x-line
|
||||||
|
.define TileMapSizeY 31 ;number of tiles in tilebuffer per y-line
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;fifo buffer entry definitions:
|
||||||
|
.define DmaFifoEntryLength 8 ;length of an entry in the dma fifo buffer
|
||||||
|
.define DmaFifoEntryType DmaFifoBuffer &$ffff + $7e0000
|
||||||
|
.define DmaFifoEntryCount DmaFifoBuffer &$ffff + $7e0000+1
|
||||||
|
.define DmaFifoEntryTarget DmaFifoBuffer &$ffff + $7e0000+3
|
||||||
|
.define DmaFifoEntrySrcLo DmaFifoBuffer &$ffff + $7e0000+5
|
||||||
|
.define DmaFifoEntrySrcHi DmaFifoBuffer &$ffff + $7e0000+6
|
||||||
|
.define DmaFifoEntrySrcBank DmaFifoBuffer &$ffff + $7e0000+7
|
||||||
|
|
||||||
|
.define DmaFifoBytesPerFrame $1000-$220-$200-$200 ;substract oam and cgram transfer sizes
|
||||||
|
.define DmaFifoMinTransferSize 128
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.define ObjListPntW ObjectList & $ffff -1
|
||||||
|
;*************************************************************************
|
||||||
|
;object buffer entry definitions:
|
||||||
|
.define ObjectFileSize 32
|
||||||
|
.define ObjEntryType ObjectList & $ffff ;0 object type designation
|
||||||
|
;bit0=X position sign of sprite(usually 0)
|
||||||
|
;bit1=Object size flag
|
||||||
|
;bit2=collidable
|
||||||
|
;bit3=subroutine? if set, this object has its own subroutine that must be executed every frame
|
||||||
|
;bit4=animate? if set, this object is animated(a special table for each object specifies the exact animation with commands for tileloading, waiting, animation loop etc)
|
||||||
|
;bit5=bg-bound? if set, this object must move in accordance with background layer 0
|
||||||
|
;bit6=object active? if set, this object is active and needs to be drawn. if clear, this sprite doesnt need to be drawn, but must be processed, anyway
|
||||||
|
;bit7=object present? if set, this slot has an object. if clear, its considered empty and can be overwritten
|
||||||
|
.define ObjEntryType2 ObjectList & $ffff + 1 ;extra type definitions. msb set=pseudo-3d sprite that has to be moved when scrolling.
|
||||||
|
;bit7=pseudo 3d sprite that needs to be moved according to z-value when background moves
|
||||||
|
;bit6=don't upload tiles for this sprite. useful for stuff like particles and such where lots of sprites share the same tiles.
|
||||||
|
;bit5=don't upload palette for this sprite.
|
||||||
|
;bit4=decaying gravity sprite
|
||||||
|
;bits0-3: current position in vector angle LUT (didn't fit anywhere else)
|
||||||
|
|
||||||
|
.define ObjEntrySubRout ObjectList & $ffff + 2
|
||||||
|
.define ObjEntryTileset ObjectList & $ffff + 3
|
||||||
|
.define ObjEntryTilesetFrame ObjectList & $ffff + 4
|
||||||
|
.define ObjEntryVramTile ObjectList & $ffff + 5 ;vram tile and
|
||||||
|
.define ObjEntryPalConf ObjectList & $ffff + 6 ;pal config must be in that order because they are accessed word-wise together
|
||||||
|
.define ObjEntryXPos ObjectList & $ffff + 7 ;word size
|
||||||
|
.define ObjEntryYPos ObjectList & $ffff + 9 ;word size
|
||||||
|
.define ObjEntryAniFrame ObjectList & $ffff + 11
|
||||||
|
.define ObjEntryAniList ObjectList & $ffff + 12
|
||||||
|
.define ObjEntryListOffset ObjectList & $ffff + 13
|
||||||
|
.define ObjEntryPalNumber ObjectList & $ffff + 14
|
||||||
|
.define ObjEntryObjectNumber ObjectList & $ffff + 15 ;number of object type so other routines know what object the`re dealing with. this is not the number of the object in the lookup table, but an arbitrary number that defines certain object types/groups so they can be moved/deleted alltogether.
|
||||||
|
.define ObjEntryXDisplacement ObjectList & $ffff + 17 ;used only by obj2oam writer to center objects
|
||||||
|
.define ObjEntryYDisplacement ObjectList & $ffff + 18 ;used only by obj2oam writer to center objects
|
||||||
|
.define ObjEntryZDisplacement ObjectList & $ffff + 19 ;used to calculate priority. also used as direct z-value in pseudo-3d scenes.
|
||||||
|
.define ObjEntryAniCmdRepeat ObjectList & $ffff + 20 ;used by animation list processor. allows repeated nops with a single command
|
||||||
|
.define ObjEntryColliSub ObjectList & $ffff + 21 ;subroutine to execute when mainchara hits this object(only active if object is collidable)
|
||||||
|
|
||||||
|
.define ObjEntryVectorSpeed ObjectList & $ffff + 22 ;bit0-2:subpixel speed. bit3-5:pixel speed. bit7 set: target speed met
|
||||||
|
.define ObjEntryVectorTarSpeed ObjectList & $ffff + 23 ;bit0-2:subpixel speed target. bit3-5:pixel speed target. bit6,7: movement type(direct, linear slow, linear fast, smooth)
|
||||||
|
.define ObjEntryVectorDir ObjectList & $ffff + 24 ;bit0-5:direction.0=facing up. bit6=turning direction.(set=clockwise) msb set=target direction met.
|
||||||
|
.define ObjEntryVectorTarDir ObjectList & $ffff + 25 ;bit0-5:target direction.0=facing up. bit6,7: movement type(direct, linear slow, linear fast, smooth)
|
||||||
|
.define ObjEntryVectorTurnSpeed ObjectList & $ffff + 26 ;bit0-2:vector speed subpixel buffer. bit3-7: direction turn speed sub-pixel buffer.
|
||||||
|
|
||||||
|
|
||||||
|
.define ObjEntryXSpeed ObjectList & $ffff + 22 ;byte, gets added to x-pos every frame. lower 4bit subpixel precision
|
||||||
|
.define ObjEntryYSpeed ObjectList & $ffff + 23 ;word, gets added to y-pos every frame. lower 4bit subpixel precision. needs to be word because of +/- handling and gravity
|
||||||
|
.define ObjEntryGravity ObjectList & $ffff + 25 ;byte, gets added to y-speed every frame.
|
||||||
|
.define ObjEntryLifeCounter ObjectList & $ffff + 26 ;word, decreased every frame
|
||||||
|
|
||||||
|
.define ObjEntrySpareVar ObjectList & $ffff + 27 ;5 bytes of data that can be used as a variable depending on the objects needs. for example, npcs uses this to store direction and walk count
|
||||||
|
|
||||||
|
;.define MaxGravObjCount 20 ;maximum amount of allowed particles onscreen
|
||||||
|
|
||||||
|
;zsort buffer definitions:
|
||||||
|
.define OamZSortBufferSize 6 ;entries:
|
||||||
|
;0 - sprite x
|
||||||
|
;1 - sprite y
|
||||||
|
;2 - sprite config
|
||||||
|
;3 - sprite config
|
||||||
|
;4 - size/sign bits (bit0,1) bit7 clear: sprite present flag
|
||||||
|
;5 - z priority (scanline number)
|
||||||
|
|
||||||
|
.define SpriteTileSizeX 8 ;pixel size of one tile for sprite processor
|
||||||
|
.define SpriteTileSizeY 8 ;pixel size of one tile for sprite processor
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;exit & collision definitions
|
||||||
|
.define ExitFileSize 8
|
||||||
|
.define ExitTargetMap ExitList & $ffff
|
||||||
|
.define ExitSubroutine ExitList & $ffff +1 ;bit 7 indicates that an exit is present and is masked off when jumping. it can conveniently be checked by loading the first word and checking for the sign flag
|
||||||
|
.define ExitXPosition ExitList & $ffff +2
|
||||||
|
.define ExitYPosition ExitList & $ffff +3
|
||||||
|
.define ExitXTargetPosition ExitList & $ffff +4
|
||||||
|
.define ExitYTargetPosition ExitList & $ffff +5
|
||||||
|
|
||||||
|
;collidable objects definitions
|
||||||
|
.define ColObjFileSize 6
|
||||||
|
.define ColObjNumber ColObjList & $ffff ;object number in object list
|
||||||
|
.define ColObjEnableFlagsSub ColObjList & $ffff +1 ;msb is enable flag, lower 7 bits are subroutine number
|
||||||
|
;.define ColObjSubroutine ColObjList & $ffff +2
|
||||||
|
.define ColObjXPos ColObjList & $ffff +2 ;xpos/8
|
||||||
|
.define ColObjYPos ColObjList & $ffff +4 ;ypos/8
|
||||||
|
|
||||||
|
.define NumberOfCollidableObjects 32 ;how far to check into object array to find collidable objects. slows down object processor alot when many people are walking
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;hdma buffer definitions
|
||||||
|
.define HdmaBufferTableEntry HdmaBuffer & $ffff
|
||||||
|
.define HdmaBufferFlags HdmaBuffer & $ffff +1 ;msb:effect present. bit0-2: number of bg/window etc to operate on(manually used on effects, bg scroll for example)
|
||||||
|
.define HdmaBufferBBusTarget HdmaBuffer & $ffff +2
|
||||||
|
.define HdmaBufferWriteConfig HdmaBuffer & $ffff +3
|
||||||
|
.define HdmaBufferRomDataTbl HdmaBuffer & $ffff +4
|
||||||
|
.define HdmaBufferRomCountTbl HdmaBuffer & $ffff +5
|
||||||
|
.define HdmaBufferSubRout HdmaBuffer & $ffff +6
|
||||||
|
.define HdmaBufferRamDataPnt HdmaBuffer & $ffff +7 ;2 bytes
|
||||||
|
.define HdmaBufferRamCountPnt HdmaBuffer & $ffff +9 ;2 bytes
|
||||||
|
.define HdmaBufferEntryPnt HdmaBuffer & $ffff +11 ;2 bytes simple relative pointer to hdma table in ram to speed up processing
|
||||||
|
.define HdmaBufferRomDataPnt HdmaBuffer & $ffff +13 ;3 bytes
|
||||||
|
.define HdmaBufferRomDataLength HdmaBuffer & $ffff +16 ;2 bytes
|
||||||
|
.define HdmaBufferRomCountPnt HdmaBuffer & $ffff +18 ;2 bytes
|
||||||
|
.define HdmaBufferBlockIndex HdmaBuffer & $ffff +21 ;2 bytes, pointer into first repeat block
|
||||||
|
.define HdmaBufferVarPointer HdmaBuffer & $ffff +23 ;2 byte, word-pointer into source table data
|
||||||
|
.define HdmaBufferTable HdmaBuffer & $ffff +25 ;start of actual table
|
||||||
|
|
||||||
|
.define HdmaBufferSize $340
|
||||||
|
.define HdmaEffectFileSize 6 ;size of a hdma effect file in rom
|
||||||
|
.define HdmaBufferNumber 6
|
||||||
|
|
||||||
|
.define Hdma3dScrollLineNumber 80 ;number of lines to process for this effect.
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;Textbox menu definitions:
|
||||||
|
.define TextBoxMenuSubrout TextBoxMenuBuffer & $ffff ;uses same subroutines as script commands
|
||||||
|
.define TextBoxMenuFlags TextBoxMenuBuffer & $ffff + 1
|
||||||
|
.define TextBoxMenuParam1 TextBoxMenuBuffer & $ffff + 2
|
||||||
|
.define TextBoxMenuParam2 TextBoxMenuBuffer & $ffff + 3
|
||||||
|
.define TextBoxMenuParam3 TextBoxMenuBuffer & $ffff + 4
|
||||||
|
.define TextBoxMenuTilePos TextBoxMenuBuffer & $ffff + 5 ;x-pixelposition inside buffer
|
||||||
|
.define TextBoxMenuLinePos TextBoxMenuBuffer & $ffff + 6 ;y-pixelposition inside buffer
|
||||||
|
.define TextBoxMenuVoid TextBoxMenuBuffer & $ffff + 7 ;future expansion
|
||||||
|
|
||||||
|
.define TextBoxMenuEntrySize 8
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;script commands ($00-$1f)
|
||||||
|
.define StringEnd 0 ;end string and close textbox immediately
|
||||||
|
.define StringBreak 1
|
||||||
|
.define StringCls 2
|
||||||
|
.define StringButtonWait 3
|
||||||
|
.define StringFontChng 4 ;takes one additional byte
|
||||||
|
.define StringFetchFixedLength 5 ;fetch string from 24bit pointer + 8bit length, copy to buffer, replace commands with whitespaces
|
||||||
|
.define StringMenuEntry 6 ;create menu entry. takes 4 parameters
|
||||||
|
.define StringMenuWait 7 ;wait for button press/menu decision
|
||||||
|
.define StringLoadString 8 ;immediately clear screen and load another textstring. takes 2 parameters(15bit textstring number)
|
||||||
|
.define StringLoadLevel 9 ;immediately clear screen and load another level. takes 3 parameter(8bit level number, 8bit x-pos, 8bit y-pos target/8)
|
||||||
|
.define StringPlaySong 10 ;upload & play a mod song. arg0: song number
|
||||||
|
.define StringGotoBattle 11 ;goto battle mode. arg0: battle number arg1: event routine to load after returning from battle. arg2,3: vwf string to load after returning from battle. 0=dont load any textstring at all
|
||||||
|
.define StringGotoSubstring 12 ;goto substring, returnable, can be nested 16 times. arg0,1: string number(word)
|
||||||
|
.define StringSubstringReturn 13 ;return to previous string, no argument
|
||||||
|
.define StringPrintDecimal 14 ;prints byte in decimal mode. uses substring in ram with return to print number. takes 4 parameter bytes, 3-byte adress of number to print, 1 byte for number length(valid values: 1-4). number can be 32bits long. (4294967295/$ffffffff max). if longer than 16bit, store low word first, then high word.
|
||||||
|
.define StringEndNoCls 15 ;same as end string, but dont clear screen. (used for statusbox)
|
||||||
|
; .define StringSetPosition 16 ;changes tile draw position in vwf buffer. 1 argument, 0-128 valid
|
||||||
|
.define StringSetSpeed 17 ;set drawing speed. 1 argument: 0=slowest, 7f=fastest. msb set: draw instantly
|
||||||
|
.define StringClsNoUpload 18 ;clear screen, but dont upload vwf buffer so textbox doesnt flicker.
|
||||||
|
.define StringGotoEvent 19 ;reset to debug mode
|
||||||
|
.define StringCondGotoSub 20 ;conditional goto substring. substring is only printed if all bits set in target bitmask are set in target byte. 6 arguments. arg0,1: substring number(word). arg2-4:target byte to check for condition. arg 5:bitmask to check for with target
|
||||||
|
.define StringReturnBattle 21 ;returns from battle, just goes to preset battle return event routine
|
||||||
|
.define StringSetBitEvent 22 ;sets a bitevent flag. arg0=number of flag (0-255)
|
||||||
|
.define StringSaveSram 23 ;saves sram to buffer
|
||||||
|
.define StringSetModVol 24 ;sets mod vol,l,r, stereo separation etc. 2 arguments
|
||||||
|
.define StringSetXY 25 ;goto line
|
||||||
|
.define StringPercentage 26 ;goto line
|
||||||
|
|
||||||
|
.define VwfPlotBufferLength 28*31*16 ;tile number * tile length * line count
|
||||||
|
.define VwfSpriteUpdFlagsLength 16 ;10 sprites to update, upper 5 sprites at $0, lower 5 sprites at $8
|
||||||
|
.define VwfTileOffset $800 ;number of tiles where to upload vwf linebuffer to
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;nwarp daisakusen specific stuff:
|
||||||
|
.define MaleHitpoints 8 ;hp - health
|
||||||
|
|
||||||
|
.define SpasmToRespawn 20
|
||||||
|
.define DefaultBlockCounter 25 ;number of frames to block after trigger
|
||||||
|
|
||||||
|
;player objects:
|
||||||
|
.define ObjEntryMaleDirection ObjectList & $ffff + 28 ;direction in which the object is currently facing
|
||||||
|
;0=down 1=up 2=left 3=right
|
||||||
|
.define ObjEntryMaleHP ObjectList & $ffff + 29 ;amount of health this player has. 0=dead
|
||||||
|
.define ObjEntryMaleInvinc ObjectList & $ffff + 30 ;if not zero, player is invincible
|
||||||
|
.define ObjEntryMaleSpasmCount ObjectList & $ffff + 30 ;this is the revival counter. if a certain value is reached, player is revived with one hp.
|
||||||
|
.define ObjEntryMaleBlockCounter ObjectList & $ffff + 31 ;this is the revival counter. if a certain value is reached, player is revived with one hp.
|
||||||
|
.define OamTypeMainCharaCtrl 3 ;main character top/controlling sprite
|
||||||
|
.define MainCharaHotspotSize 32 ;size of mainchara hotspot square in pixels
|
||||||
|
.define NPCHotspotSizeX 14 ;size of walking player hotspot square in pixels
|
||||||
|
.define NPCHotspotSizeY 20 ;size of walking player hotspot square in pixels
|
||||||
|
.define NPCHitPointSizeX 12
|
||||||
|
.define NPCHitPointSizeY 20
|
||||||
|
|
||||||
|
|
||||||
|
;hdma gradient colors
|
||||||
|
.define CreditsGradientColor 247 ;cgram entry for color gradient
|
||||||
|
.define TextBoxGradientColor 113 ;cgram entry for color gradient
|
||||||
|
.define BattleBoxGradientColor 113 ;cgram entry for color gradient
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;qd16 stuff
|
||||||
|
.define QD16McAck $a5
|
||||||
|
.define QD16SnesAck $5a
|
||||||
|
|
||||||
|
.define QD16RomBase $c00000
|
||||||
|
.define QD16OpenBusMirror $400000
|
||||||
|
|
||||||
|
.define QD16McHandshake QD16RomBase
|
||||||
|
.define QD16McCommand QD16RomBase+1
|
||||||
|
.define QD16RamIrq BaseAdress+$ffec
|
||||||
|
.define QD16RomIrq QD16RomBase+$ffee
|
||||||
|
|
||||||
|
.define LoromOffset $0000
|
||||||
|
.define HiromOffset $8000
|
||||||
|
.define RomHeaderTitle QD16RomBase+$7fc0
|
||||||
|
.define RomHeaderMap QD16RomBase+$7fd5
|
||||||
|
.define RomHeaderSize QD16RomBase+$7fd7
|
||||||
|
.define RomVectorReset QD16RomBase+$7ffc
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
;legacy labels:
|
||||||
|
|
||||||
|
.define LevelLUT 0
|
||||||
|
.define StreamSetLut 0
|
||||||
|
.define StatArrayName 0
|
||||||
|
.define StatArrayHp 0
|
||||||
|
.define StatArrayMaxHp 0
|
||||||
|
.define StatArrayExp 0
|
||||||
|
.define StatArrayLevel 0
|
||||||
|
.define StatArrayMoney 0
|
||||||
|
.define CharaStatusArraySize 0
|
||||||
|
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
|
;palette effect definitions
|
||||||
|
.define PalEffectFlags PalEffectBuffer&$ffff
|
||||||
|
.define PalEffectId PalEffectBuffer&$ffff+1
|
||||||
|
.define PalEffectSub PalEffectBuffer&$ffff+2
|
||||||
|
.define PalEffectStart PalEffectBuffer&$ffff+3
|
||||||
|
.define PalEffectLength PalEffectBuffer&$ffff+4
|
||||||
|
.define PalEffectSpeed PalEffectBuffer&$ffff+5
|
||||||
|
.define PalEffectRomTbl PalEffectBuffer&$ffff+6
|
||||||
|
.define PalEffectVoid PalEffectBuffer&$ffff+7
|
||||||
|
.define PalEffectTarBuff PalEffectBuffer&$ffff+8
|
||||||
|
|
||||||
|
.define PalEffectEntrySize $100
|
||||||
|
;*************************************************************************
|
||||||
|
|
||||||
|
;*************************************************************************
|
||||||
216
snes/qd16/routines/eventroutines.asm
Executable file
216
snes/qd16/routines/eventroutines.asm
Executable file
@ -0,0 +1,216 @@
|
|||||||
|
.include "routines/main.h"
|
||||||
|
.section "events" semifree
|
||||||
|
|
||||||
|
EventPtTable:
|
||||||
|
.dw EventRoutine0
|
||||||
|
.dw EventRoutine1
|
||||||
|
.dw EventRoutine2
|
||||||
|
.dw EventRoutine3
|
||||||
|
.dw EventRoutine4
|
||||||
|
|
||||||
|
;boot init, also debug menu check
|
||||||
|
EventRoutine0:
|
||||||
|
rep #$31
|
||||||
|
lda.w #200
|
||||||
|
sta.w GravityCutOffYPos
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
lda.b #0
|
||||||
|
sta.b ScreenBrightness
|
||||||
|
lda.b #$80
|
||||||
|
sta.l $2100
|
||||||
|
|
||||||
|
|
||||||
|
; jsr InitOam
|
||||||
|
jsr InitHdma
|
||||||
|
jsr ResetScrollOffsets
|
||||||
|
jsr InitDmaFifo
|
||||||
|
; jsr ClearColObjList
|
||||||
|
; jsr ClearZBuffer
|
||||||
|
jsr PalEffectInit
|
||||||
|
|
||||||
|
jsr ClearVRAM
|
||||||
|
jsr ClearBg3TilemapBuffer ;cls
|
||||||
|
jsr ClearBg2TilemapBuffer ;cls
|
||||||
|
jsr ClearBg1TilemapBuffer ;cls
|
||||||
|
|
||||||
|
inc.b NMIBg1UploadFlag
|
||||||
|
inc.b NMIBg2UploadFlag
|
||||||
|
inc.b NMIBg3UploadFlag
|
||||||
|
stz.b FocusScreenFlags
|
||||||
|
lda.b #0
|
||||||
|
sta.b CheckJoypadMode ;set joypad check to 8 players
|
||||||
|
lda.b #$80
|
||||||
|
sta.w IrqBrightnessIncDec
|
||||||
|
lda.b #20
|
||||||
|
sta.w MaxGravObjCount
|
||||||
|
|
||||||
|
|
||||||
|
lda.b #0 ;load bgmode config #1
|
||||||
|
jsr SetBGMode
|
||||||
|
; jsr DMATilesToVramBG3
|
||||||
|
; jsr ClearBg3TilemapBuffer ;cls
|
||||||
|
|
||||||
|
lda.b #0
|
||||||
|
jsr SpcPlaySong
|
||||||
|
|
||||||
|
stz.b LoadMenuDoInit
|
||||||
|
|
||||||
|
inc.b CurrentEvent
|
||||||
|
lda.b #13 ;window effect
|
||||||
|
jsr CreateHdmaEffect
|
||||||
|
lda.b #14 ;wavy scroll
|
||||||
|
jsr CreateHdmaEffect
|
||||||
|
|
||||||
|
rep #$31
|
||||||
|
lda.w #%00100100
|
||||||
|
ldx.w #0
|
||||||
|
ldy.w #0
|
||||||
|
jsr UploadBgObject
|
||||||
|
lda.w #%00101001+$0100
|
||||||
|
ldx.w #0
|
||||||
|
ldy.w #0
|
||||||
|
jsr UploadBgObject
|
||||||
|
|
||||||
|
lda.w #0
|
||||||
|
jsr VwfCreateTextbox
|
||||||
|
|
||||||
|
lda.w #11
|
||||||
|
jsr PalEffectCreate
|
||||||
|
|
||||||
|
lda.w #12
|
||||||
|
jsr PalEffectCreate
|
||||||
|
|
||||||
|
lda.w #$0504
|
||||||
|
sta.w SpcReportType
|
||||||
|
|
||||||
|
jsr SpcSetReportType
|
||||||
|
rts
|
||||||
|
|
||||||
|
;wait for rom upload to start
|
||||||
|
EventRoutine1:
|
||||||
|
sep #$20
|
||||||
|
lda.w Qd16Flags
|
||||||
|
lsr a
|
||||||
|
bcc EventNoRomLoad
|
||||||
|
|
||||||
|
inc.b CurrentEvent
|
||||||
|
|
||||||
|
rep #$31
|
||||||
|
lda.w #1
|
||||||
|
jsr VwfCreateTextbox ;print "loading rom"
|
||||||
|
sep #$20
|
||||||
|
|
||||||
|
EventNoRomLoad:
|
||||||
|
jsr ShakeShake
|
||||||
|
jsr QD16CommandPoll
|
||||||
|
jsr VwfHandler
|
||||||
|
jsr ProcessHdmaList
|
||||||
|
jsr PalEffectHandler
|
||||||
|
rts
|
||||||
|
|
||||||
|
;seek rom header:
|
||||||
|
EventRoutine2:
|
||||||
|
jsr QD16CheckHeaderValid
|
||||||
|
bcc SeekHeaderNotFound
|
||||||
|
|
||||||
|
rep #$31
|
||||||
|
lda.l RomHeaderSize,x ;get romsize
|
||||||
|
txy
|
||||||
|
sec
|
||||||
|
sbc.w #8
|
||||||
|
and.w #7
|
||||||
|
tax
|
||||||
|
lda.l RomSizeLUT+BaseAdress,x
|
||||||
|
sta.w Qd16Mbit
|
||||||
|
tya
|
||||||
|
bne SeekHeaderHirom
|
||||||
|
|
||||||
|
lda.w #5
|
||||||
|
jsr VwfCreateTextbox ;print lorom header
|
||||||
|
bra SeekHeaderNotFound
|
||||||
|
|
||||||
|
SeekHeaderHirom:
|
||||||
|
|
||||||
|
lda.w #6
|
||||||
|
jsr VwfCreateTextbox ;print hirom header
|
||||||
|
|
||||||
|
SeekHeaderNotFound:
|
||||||
|
jsr ShakeShake
|
||||||
|
jsr QD16CommandPoll
|
||||||
|
jsr VwfHandler
|
||||||
|
jsr ProcessHdmaList
|
||||||
|
jsr PalEffectHandler
|
||||||
|
rts
|
||||||
|
|
||||||
|
RomSizeLUT:
|
||||||
|
.db 2
|
||||||
|
.db 4
|
||||||
|
.db 8
|
||||||
|
.db 16
|
||||||
|
.db 32
|
||||||
|
.db 64
|
||||||
|
.db 0
|
||||||
|
.db 0
|
||||||
|
ShakeShake:
|
||||||
|
php
|
||||||
|
sep #$20
|
||||||
|
lda.b #$0f
|
||||||
|
sta.b ScreenBrightness
|
||||||
|
|
||||||
|
lda.l SpcReportBuffer+8
|
||||||
|
beq event1Noshake
|
||||||
|
|
||||||
|
lda.b Mosaic
|
||||||
|
clc
|
||||||
|
adc.b #$80
|
||||||
|
sta.b Mosaic
|
||||||
|
event1Noshake:
|
||||||
|
; jsr ObjectProcessor
|
||||||
|
|
||||||
|
lda.b Mosaic
|
||||||
|
and.b #$f0
|
||||||
|
beq Event1MosDec
|
||||||
|
|
||||||
|
sec
|
||||||
|
sbc.b #$10
|
||||||
|
Event1MosDec:
|
||||||
|
ora.b #%10
|
||||||
|
sta.b Mosaic
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
;wait some frames
|
||||||
|
EventRoutine3:
|
||||||
|
sep #$20
|
||||||
|
dec.w FrameWait
|
||||||
|
bne EventRoutine3Wait
|
||||||
|
|
||||||
|
lda.w EventBuffer
|
||||||
|
sta.b CurrentEvent
|
||||||
|
|
||||||
|
EventRoutine3Wait:
|
||||||
|
rts
|
||||||
|
|
||||||
|
;fade out, dont accept any new commands
|
||||||
|
EventRoutine4:
|
||||||
|
jsr VwfHandler
|
||||||
|
jsr ProcessHdmaList
|
||||||
|
jsr PalEffectHandler
|
||||||
|
rts
|
||||||
|
|
||||||
|
WaitFrameEvent:
|
||||||
|
pha
|
||||||
|
php
|
||||||
|
sep #$20
|
||||||
|
sta.w FrameWait
|
||||||
|
lda.b CurrentEvent
|
||||||
|
sta.w EventBuffer
|
||||||
|
lda.b #3
|
||||||
|
sta.b CurrentEvent
|
||||||
|
plp
|
||||||
|
pla
|
||||||
|
rts
|
||||||
|
|
||||||
|
.ends
|
||||||
|
|
||||||
49
snes/qd16/routines/main.h
Executable file
49
snes/qd16/routines/main.h
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
.MEMORYMAP
|
||||||
|
DEFAULTSLOT 0
|
||||||
|
SLOTSIZE $10000
|
||||||
|
SLOT 0 $0000
|
||||||
|
.ENDME
|
||||||
|
|
||||||
|
.ROMBANKMAP
|
||||||
|
BANKSTOTAL 2
|
||||||
|
BANKSIZE $10000
|
||||||
|
BANKS 2
|
||||||
|
.ENDRO
|
||||||
|
|
||||||
|
.snesheader
|
||||||
|
id "QD16"
|
||||||
|
name "QUICKDEV16"
|
||||||
|
hirom
|
||||||
|
fastrom
|
||||||
|
cartridgetype 0
|
||||||
|
romsize 8
|
||||||
|
sramsize 0
|
||||||
|
country 0
|
||||||
|
licenseecode $33
|
||||||
|
version 0
|
||||||
|
.endsnes
|
||||||
|
|
||||||
|
.SNESNATIVEVECTOR
|
||||||
|
COP EmptyHandler
|
||||||
|
BRK EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
UNUSED IrqHookUp
|
||||||
|
IRQ EmptyHandler
|
||||||
|
.ENDNATIVEVECTOR
|
||||||
|
|
||||||
|
.SNESEMUVECTOR
|
||||||
|
COP EmptyHandler
|
||||||
|
ABORT EmptyHandler
|
||||||
|
NMI EmptyHandler
|
||||||
|
RESET Boot
|
||||||
|
IRQBRK EmptyHandler
|
||||||
|
.ENDEMUVECTOR
|
||||||
|
|
||||||
|
.EMPTYFILL $ff
|
||||||
|
|
||||||
|
|
||||||
|
.include "routines/variables.h"
|
||||||
|
.include "routines/defines.h"
|
||||||
|
|
||||||
|
|
||||||
282
snes/qd16/routines/qd16cmdhandler.asm
Executable file
282
snes/qd16/routines/qd16cmdhandler.asm
Executable file
@ -0,0 +1,282 @@
|
|||||||
|
.include "routines/main.h"
|
||||||
|
.section "qd16cmd" semifree
|
||||||
|
/*
|
||||||
|
processes commands from qd16 microcontroller.
|
||||||
|
communicates using physical rom adresses $00:0000(ACK), $00:0001(CMD), $00:0000(DAT)
|
||||||
|
check for open bus before processing any commands
|
||||||
|
*/
|
||||||
|
QD16CommandPoll:
|
||||||
|
php
|
||||||
|
sep #$20
|
||||||
|
lda.w Qd16Flags
|
||||||
|
bit.b #%100
|
||||||
|
bne QD16CommandPollCancel ;cancel manual command polling if irq-com mode is enabled
|
||||||
|
|
||||||
|
jsr QD16CommandHandler
|
||||||
|
|
||||||
|
QD16CommandPollCancel:
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16CommandHandler:
|
||||||
|
php
|
||||||
|
rep #$31
|
||||||
|
lda.l QD16McCommand ;get data first(in case the mc is just about to steal the bus again)
|
||||||
|
sta.b tmp
|
||||||
|
lda.l QD16McHandshake ;has microcontroller disabled rom access for snes?(reading open bus returns differing values here)
|
||||||
|
cmp.l QD16OpenBusMirror
|
||||||
|
bne QD16OpenBus
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
cmp.b #QD16McAck
|
||||||
|
bne QD16OpenBus ;either open bus or the mc hasn't written any new command yet
|
||||||
|
|
||||||
|
lda.b tmp
|
||||||
|
bit.b #$f8 ;valid command present?(max number of commands is 8)
|
||||||
|
bne QD16OpenBus ;if any of the upper 5 bits are set, command is invalid
|
||||||
|
|
||||||
|
lda.b #QD16SnesAck
|
||||||
|
sta.l $c00000 ;tell mc that data has been received
|
||||||
|
|
||||||
|
;handshake complete, process data
|
||||||
|
rep #$31
|
||||||
|
lda.b tmp
|
||||||
|
pha
|
||||||
|
and.w #$7 ;8 commands max
|
||||||
|
asl a
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
jsr (QD16CmdLUT,x) ;execute command
|
||||||
|
|
||||||
|
QD16OpenBus:
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16CmdLUT:
|
||||||
|
.dw QD16GetBankCount
|
||||||
|
.dw QD16EnableIrqCom
|
||||||
|
.dw QD16UpdateLoadPercentage
|
||||||
|
.dw QD16FadeOut
|
||||||
|
.dw QD16DrawHeader
|
||||||
|
.dw QD16CmdVoid
|
||||||
|
.dw QD16CmdVoid
|
||||||
|
.dw QD16CmdVoid
|
||||||
|
|
||||||
|
QD16CmdVoid:
|
||||||
|
rts
|
||||||
|
|
||||||
|
;this can be triggered by an explicit mc-command. apart from that, it's also triggered when mc reports bank 0 has been uploaded.
|
||||||
|
QD16DrawHeader:
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16EnableIrqCom:
|
||||||
|
rep #$31
|
||||||
|
lda.l QD16RamIrq ;did mc copy irq-vector to correct location in rom?
|
||||||
|
cmp.l QD16RomIrq
|
||||||
|
; beq QD16EnableIrqVectorOk ;debug
|
||||||
|
|
||||||
|
lda.w #$adba ;clear mc-ack, signalize error, don't enter irq-mode
|
||||||
|
sta.l QD16McHandshake
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16EnableIrqVectorOk:
|
||||||
|
sep #$20
|
||||||
|
lda.b #1
|
||||||
|
sta.w IrqRoutineNumber
|
||||||
|
lda.b #%100
|
||||||
|
ora.w Qd16Flags
|
||||||
|
sta.w Qd16Flags ;set "enable irq-com"-flag
|
||||||
|
rts
|
||||||
|
|
||||||
|
;input:x,header position in bank
|
||||||
|
QD16CheckHeaderValid:
|
||||||
|
php
|
||||||
|
sep #$20
|
||||||
|
lda.w Qd16Flags
|
||||||
|
bit.b #%10
|
||||||
|
bne QD16CheckHeaderNoHirom ;skip header drawing if a valid header has been found before
|
||||||
|
|
||||||
|
rep #$31
|
||||||
|
lda.l RomVectorReset ;reset vector
|
||||||
|
bpl QD16CheckHeaderNoLorom
|
||||||
|
|
||||||
|
lda.l RomHeaderMap ;rom map, lorom?
|
||||||
|
lsr a
|
||||||
|
bcs QD16CheckHeaderNoLorom
|
||||||
|
|
||||||
|
lda.l RomHeaderSize ;rom size
|
||||||
|
and.w #$ff
|
||||||
|
cmp.w #$7 ;smaller than 4mbit?
|
||||||
|
bcc QD16CheckHeaderNoLorom
|
||||||
|
|
||||||
|
cmp.w #$e ;bigger than 64mbit?
|
||||||
|
bcs QD16CheckHeaderNoLorom
|
||||||
|
|
||||||
|
ldx.w #LoromOffset ;header found
|
||||||
|
jsr QD16CheckTitle
|
||||||
|
bcc QD16CheckHeaderNoLorom
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
lda.b #%10
|
||||||
|
ora.w Qd16Flags
|
||||||
|
sta.w Qd16Flags ;set "header found, title printed"-flag
|
||||||
|
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16CheckHeaderNoLorom:
|
||||||
|
rep #$31
|
||||||
|
lda.l RomVectorReset+HiromOffset ;reset vector high byte
|
||||||
|
bpl QD16CheckHeaderNoHirom
|
||||||
|
|
||||||
|
lda.l RomHeaderMap+HiromOffset ;rom map, lorom?
|
||||||
|
lsr a
|
||||||
|
bcc QD16CheckHeaderNoHirom
|
||||||
|
|
||||||
|
lda.l RomHeaderSize+HiromOffset ;rom size
|
||||||
|
and.w #$ff
|
||||||
|
cmp.w #$7 ;smaller than 4mbit?
|
||||||
|
bcc QD16CheckHeaderNoHirom
|
||||||
|
|
||||||
|
cmp.w #$e ;bigger than 64mbit?
|
||||||
|
bcs QD16CheckHeaderNoHirom
|
||||||
|
|
||||||
|
ldx.w #HiromOffset ;header found
|
||||||
|
jsr QD16CheckTitle
|
||||||
|
bcc QD16CheckHeaderNoHirom
|
||||||
|
|
||||||
|
sep #$20
|
||||||
|
lda.b #%10
|
||||||
|
ora.w Qd16Flags
|
||||||
|
sta.w Qd16Flags ;set "header found, title printed"-flag
|
||||||
|
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16CheckHeaderNoHirom:
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
;input:x,16bit:lo/hirom pointer.
|
||||||
|
;checks if bytes are within ranges $20-$7f and $a7-$df(kana)
|
||||||
|
QD16CheckTitle:
|
||||||
|
php
|
||||||
|
phx
|
||||||
|
sep #$20
|
||||||
|
ldy.w #0
|
||||||
|
|
||||||
|
QD16CheckTitleLoop:
|
||||||
|
;check if chars are in ASCII/kana range and return null if any invalid ones are found.
|
||||||
|
lda.l RomHeaderTitle,x
|
||||||
|
cmp.b #$20
|
||||||
|
bcc QD16CheckTitleVoid
|
||||||
|
;is bigger than $20
|
||||||
|
cmp.b #$df+1
|
||||||
|
bcs QD16CheckTitleVoid
|
||||||
|
;is between $20 and $df
|
||||||
|
bpl QD16CheckTitleCharOk
|
||||||
|
;is between $80 and $df
|
||||||
|
cmp.b #$a7
|
||||||
|
bcc QD16CheckTitleVoid
|
||||||
|
;is between $a7 and $df
|
||||||
|
QD16CheckTitleCharOk:
|
||||||
|
inx ;is between $a7 and $df or between $20 and $7f
|
||||||
|
iny
|
||||||
|
cpy.w #21
|
||||||
|
bne QD16CheckTitleLoop
|
||||||
|
|
||||||
|
plx ;title is ok, ready to print
|
||||||
|
plp
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16CheckTitleVoid:
|
||||||
|
plx ;title is not present/contains bad chars
|
||||||
|
plp
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16GetBankCount:
|
||||||
|
sep #$20
|
||||||
|
xba
|
||||||
|
sta.w QD16BankCount
|
||||||
|
lda.b #%1
|
||||||
|
ora.w Qd16Flags
|
||||||
|
sta.w Qd16Flags ;set "rom upload commenced"-flag
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16UpdateLoadPercentage:
|
||||||
|
sep #$20
|
||||||
|
xba
|
||||||
|
cmp.b #101
|
||||||
|
bcc QD16UpdateLoadPercentageNoOver
|
||||||
|
|
||||||
|
lda.b #100
|
||||||
|
|
||||||
|
QD16UpdateLoadPercentageNoOver:
|
||||||
|
cmp.w PercentageBuff
|
||||||
|
beq QD16UpdateLoadPercentageNoUpdate
|
||||||
|
|
||||||
|
sta.w PercentageBuff
|
||||||
|
rep #$31
|
||||||
|
lda.w #2 ;print percentage bar
|
||||||
|
jsr VwfCreateTextbox
|
||||||
|
|
||||||
|
QD16UpdateLoadPercentageNoUpdate:
|
||||||
|
sep #$20
|
||||||
|
lda.b #%1
|
||||||
|
ora.w Qd16Flags
|
||||||
|
sta.w Qd16Flags ;set "rom upload commenced"-flag
|
||||||
|
rts
|
||||||
|
|
||||||
|
/*
|
||||||
|
? = loadstat
|
||||||
|
100 = bankcount
|
||||||
|
*/
|
||||||
|
QD16UpdateLoadstatus:
|
||||||
|
sep #$20
|
||||||
|
xba
|
||||||
|
sta.l $4202 ;current banks*100
|
||||||
|
lda.b #100
|
||||||
|
sta.l $4203
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
rep #$31
|
||||||
|
lda.l $4216
|
||||||
|
sta.l $4204
|
||||||
|
sep #$20
|
||||||
|
lda.w QD16BankCount ;divide by 100
|
||||||
|
sta.l $4206
|
||||||
|
nop ;wait some cycles for division to finish
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
nop
|
||||||
|
rep #$31
|
||||||
|
lda.l $4214
|
||||||
|
sta.w Qd16LoadProgress
|
||||||
|
|
||||||
|
|
||||||
|
QD16DivErr:
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16Cmd2:
|
||||||
|
rts
|
||||||
|
|
||||||
|
QD16FadeOut:
|
||||||
|
sep #$20
|
||||||
|
jsr PalEffectInit
|
||||||
|
lda.b #13
|
||||||
|
jsr PalEffectCreate
|
||||||
|
rts
|
||||||
|
|
||||||
|
.ends
|
||||||
367
snes/qd16/routines/variables.h
Executable file
367
snes/qd16/routines/variables.h
Executable file
@ -0,0 +1,367 @@
|
|||||||
|
; .include "routines/main.h"
|
||||||
|
|
||||||
|
.ENUM $00 ;1byte direct page variables for kernel and game mechanics
|
||||||
|
tmp ds 25
|
||||||
|
tmpdma ds 4
|
||||||
|
CurrentEvent db
|
||||||
|
FrameCounterLo db
|
||||||
|
FrameCounterHi db
|
||||||
|
SetIni db
|
||||||
|
ScreenMode db
|
||||||
|
MainScreen db
|
||||||
|
SubScreen db
|
||||||
|
ScreenBrightness db
|
||||||
|
BGTilesVram12 db
|
||||||
|
BGTilesVram34 db
|
||||||
|
BG1TilemapVram db
|
||||||
|
BG2TilemapVram db
|
||||||
|
BG3TilemapVram db
|
||||||
|
BG4TilemapVram db
|
||||||
|
SpriteTileOffsetVram dw
|
||||||
|
ObjSel db
|
||||||
|
BG1HOfLo db
|
||||||
|
BG1HOfHi db
|
||||||
|
BG1VOfLo db
|
||||||
|
BG1VOfHi db
|
||||||
|
BG2HOfLo db
|
||||||
|
BG2HOfHi db
|
||||||
|
BG2VOfLo db
|
||||||
|
BG2VOfHi db
|
||||||
|
HdmaFlags db
|
||||||
|
HdmaPause db ;if msb is set, dont initiate further hdma transfers. this is useful when the rom hdma is trying to read from isnt present atm.
|
||||||
|
ThreeBytePointerLo db
|
||||||
|
ThreeBytePointerHi db
|
||||||
|
ThreeBytePointerBank db
|
||||||
|
ThreeBytePointerLo2 db
|
||||||
|
ThreeBytePointerHi2 db
|
||||||
|
ThreeBytePointerBank2 db
|
||||||
|
BrightnessSpeed db
|
||||||
|
LastFrameLo db
|
||||||
|
LastFrameHi db
|
||||||
|
CGWsel db
|
||||||
|
CgadsubConfig db
|
||||||
|
FixedColourR db
|
||||||
|
FixedColourG db
|
||||||
|
FixedColourB db
|
||||||
|
InterruptEnableFlags db
|
||||||
|
IrqRoutineNumber db
|
||||||
|
IrqRoutineNumberBuffer db ;backup in case multiple irqs are executed per frame. nmi writes this number back to irq number every frame
|
||||||
|
IrqVCounter dw
|
||||||
|
IrqHCounter dw
|
||||||
|
W12SEL db
|
||||||
|
W34SEL db
|
||||||
|
WOBJSEL db
|
||||||
|
W1L db
|
||||||
|
W1R db
|
||||||
|
W2L db
|
||||||
|
W2R db
|
||||||
|
WBGLOG db
|
||||||
|
WOBJLOG db
|
||||||
|
WMS db
|
||||||
|
WSS db
|
||||||
|
Mosaic db
|
||||||
|
BGTilesVram2 dw
|
||||||
|
Bg3Status db
|
||||||
|
PrintStringThreeBytePointerLo db
|
||||||
|
PrintStringThreeBytePointerHi db
|
||||||
|
PrintStringThreeBytePointerBank db
|
||||||
|
VramBg1Tilemap dw
|
||||||
|
VramBg2Tilemap dw
|
||||||
|
VramBg3Tilemap dw
|
||||||
|
VramBg4Tilemap dw
|
||||||
|
VramBg1Tiles dw
|
||||||
|
VramBg2Tiles dw
|
||||||
|
VramBg3Tiles dw
|
||||||
|
VramBg4Tiles dw
|
||||||
|
SetBGThreeBytePointerLo db
|
||||||
|
SetBGThreeBytePointerHi db
|
||||||
|
SetBGThreeBytePointerBank db
|
||||||
|
|
||||||
|
NMIOamUploadFlag db
|
||||||
|
NMIPaletteUploadFlag db ;refresh palette during nmi?
|
||||||
|
NMIBg1UploadFlag db ;refresh bg1 tilemap during nmi?
|
||||||
|
NMIBg2UploadFlag db
|
||||||
|
NMIBg3UploadFlag db ;UploadBg3Map db ;if this is not zero, upload tilemap to bg3
|
||||||
|
CurrentMapNumber db ;number of currently loaded map
|
||||||
|
CurrentMapPointer ds 3 ;24bit pointer to current map file
|
||||||
|
CurrentColMapPointer ds 3 ;24 bit pointer to current collision map
|
||||||
|
BgScrollCounterX db ;ranges from 0-7 inside one tile
|
||||||
|
BgScrollCounterY db
|
||||||
|
BgMapCurrentPositionX db ;current upper left tile on screen
|
||||||
|
BgMapCurrentPositionY db
|
||||||
|
ScreenPixelPositionX dw ;exact pixel position of upper left border for sprite position calculation
|
||||||
|
ScreenPixelPositionY dw ;exact pixel position of upper left border for sprite position calculation
|
||||||
|
BgScrollRowUploadDisplace db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
|
||||||
|
BgScrollTilemapRowUploadDisplaceX db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
|
||||||
|
BgScrollTilemapRowUploadDisplaceY db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
|
||||||
|
BgScrollOffsetPointerTilesX db ;pointer to current vertical column that holds the leftmost tiles onscreen(goes from 0-27)
|
||||||
|
BgScrollOffsetPointerTilesY db
|
||||||
|
BgScrollOffsetPointerTilemapX db ;pointer to current vertical column that holds the leftmost tiles onscreen for tilemap (goes from 0-32)
|
||||||
|
BgScrollOffsetPointerTilemapY db
|
||||||
|
BgScrollTileSourcePointer ds 3 ;pointer to first tile of tileline to be uplodaded
|
||||||
|
|
||||||
|
DmaFifoPointer dw ;relative pointer to current free entry in buffer
|
||||||
|
DmaFifoPointerIrq dw
|
||||||
|
DmaFifoSourcePointerLo dw
|
||||||
|
DmaFifoSourcePointerBa db
|
||||||
|
DmaFifoOverhang dw
|
||||||
|
DmaFifoTotalBytesTransferred dw ;used to guesstimate how much time we have left for transfers
|
||||||
|
|
||||||
|
ObjectListPointer dw ;pointer to next free object in object list
|
||||||
|
ObjectListPointerCurrent dw ;pointer to current object in object list, used to set direct register
|
||||||
|
CurrentObjectNumber db ;number of currently selected object in list
|
||||||
|
OamBufferPointer dw ;pointer to current sprite in oam buffer
|
||||||
|
OamZsortBufferPointer dw ;pointer to current sprite in oam zsort buffer
|
||||||
|
OamZsortSpriteNumber db ;number of sprites to sort
|
||||||
|
OamAniListStraightRepeatFlag dw
|
||||||
|
|
||||||
|
FocusScreenFlags db ;flags for focus
|
||||||
|
;bit0=enable focus on object
|
||||||
|
FocusScreenObject db ;number of object in object list to focus to
|
||||||
|
FocusScreenSpline db ;number of preset table to use for scrolling depending on distance to object(linear,sine,exp etc)
|
||||||
|
FocusScreenXWait db
|
||||||
|
FocusScreenYWait db
|
||||||
|
|
||||||
|
CollisionPixelX dw
|
||||||
|
CollisionPixelY dw
|
||||||
|
CollisionTemp dw
|
||||||
|
PalTemp db ;used for object subroutine
|
||||||
|
ExitCollisionPointer dw ;bits0-14 contain number of exit. old:;bits0-14 contain pointer to an entry in the exit list. if bit15 is set, this exit has been hit and needs to be procesed.
|
||||||
|
R1 db ;random number generator buffers
|
||||||
|
R2 db
|
||||||
|
R3 db
|
||||||
|
R4 db
|
||||||
|
ColObjListPointer dw
|
||||||
|
HdmaListPointer dw
|
||||||
|
VwfFontPointerLo ds 3
|
||||||
|
|
||||||
|
|
||||||
|
Spctmp ds 8 ;temp buffer for spc stuff
|
||||||
|
SpcCurrentStreamSet db
|
||||||
|
SpcHandlerState db
|
||||||
|
SpcHandlerArgument0 db
|
||||||
|
SpcHandlerArgument1 db
|
||||||
|
SpcHandlerArgument2 db
|
||||||
|
SpcCmdFifoStart db
|
||||||
|
SpcCmdFifoEnd db
|
||||||
|
|
||||||
|
PtPlayerDataPointerLo db ;assumes dreg: $0000
|
||||||
|
PtPlayerDataPointerHi db ;assumes dreg: $0000
|
||||||
|
PtPlayerDataPointerBa db ;assumes dreg: $0000
|
||||||
|
PtPlayerCurrentSong db ;assumes dreg: $0000
|
||||||
|
PtPlayerCurrentSamplePack db
|
||||||
|
PtPlayerCurrentSoundEffect db
|
||||||
|
|
||||||
|
PtPlayerSmplBufferPosLo db ;not needed at all
|
||||||
|
PtPlayerSmplBufferPosHi db
|
||||||
|
SpcUploadedFlag db ;msb set=song upload complete and playing. bit6 set=sample pack uploaded
|
||||||
|
VideoHandlerState db
|
||||||
|
|
||||||
|
CheckJoypadMode db ;0=1 player, 1=8 players, 2=instruments + 1 joypad
|
||||||
|
|
||||||
|
FontSelector db
|
||||||
|
FixedStringLength db
|
||||||
|
PrintStringPalette db
|
||||||
|
|
||||||
|
MenuFileThreeBytePointerLo db
|
||||||
|
MenuFileThreeBytePointerHi db
|
||||||
|
MenuFileThreeBytePointerBank db
|
||||||
|
MenuRowsThreeBytePointerLo db
|
||||||
|
MenuRowsThreeBytePointerHi db
|
||||||
|
MenuRowsThreeBytePointerBank db
|
||||||
|
MenuRowsThreeByteOptionPointerLo db
|
||||||
|
MenuRowsThreeByteOptionPointerHi db
|
||||||
|
MenuRowsThreeByteOptionPointerBank db
|
||||||
|
MenuRowsThreeByteCodePointerLo db
|
||||||
|
MenuRowsThreeByteCodePointerHi db
|
||||||
|
MenuRowsThreeByteCodePointerBank db
|
||||||
|
LoadMenuInitialOffset dw
|
||||||
|
LoadMenuInitialOptionOffset dw
|
||||||
|
LoadMenuVerticalSpacing dw
|
||||||
|
LoadMenuNumberOfRows db
|
||||||
|
LoadMenuCurrentRow db
|
||||||
|
LoadMenuStringPosLo db
|
||||||
|
LoadMenuStringPosHi db
|
||||||
|
LoadMenuPalUnselSel db
|
||||||
|
LoadMenuDoInit db
|
||||||
|
;BattleSubroutine db
|
||||||
|
HdmaListCounter db ;counter used by hdma handler to switch through channels
|
||||||
|
|
||||||
|
tmpIrq ds 8 ;Temporary Buffer for irq routines
|
||||||
|
BattleMusicState db
|
||||||
|
;CurrentTablistPointer ds 3
|
||||||
|
.ENDE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.ENUM $200 ;2-byte adresses for game status stuff
|
||||||
|
tmpTest ds 4
|
||||||
|
Hdma3dScrollCountV db ;amount of lines to wait before hdma table
|
||||||
|
CurrentBattleFile db
|
||||||
|
MapStartPosX db ;map start position set by external routine
|
||||||
|
MapStartPosY db
|
||||||
|
MapSizeX db ;/must not be seperated cause they may be written to both at the same time in word-mode
|
||||||
|
MapSizeY db ;\
|
||||||
|
BGMapStartPosX db ;start position for bg upload(may differ from sprite location if near a border)
|
||||||
|
BGMapStartPosY db
|
||||||
|
|
||||||
|
CurrentStringTarget db ;current position in bg1 tilemap to write to, 2 bytes
|
||||||
|
CurrentStringTargetHi db
|
||||||
|
FixedColourRsave db
|
||||||
|
FixedColourGsave db
|
||||||
|
FixedColourBsave db
|
||||||
|
CpuUsageScanline db
|
||||||
|
SpcStreamVolume db
|
||||||
|
SpcSEVolume db
|
||||||
|
SpcSEPitch db
|
||||||
|
SpcSongSpeed db ;default $a0
|
||||||
|
SpcSongChMask db ;default $0f
|
||||||
|
SpcReportType dw ;0=none 1=timecode 2=channel-levels(vol out) 3=special mod command
|
||||||
|
|
||||||
|
SpcCmdFifo ds 64
|
||||||
|
MessageDeleteCounter dw ;inactive when zero, delete message when 1(then set zero), decrease each frame when not 0 or 1
|
||||||
|
|
||||||
|
HdmaFadeInOutState db ;bit7set=fade in/bit7clear=fade out,bit6set=done fading bit0-5=current state in LUT for window and mosiac size
|
||||||
|
MainCharaObjectNumber db
|
||||||
|
MainCharaXPos dw
|
||||||
|
MainCharaYPos dw
|
||||||
|
ExitMapTarget dw ;target map
|
||||||
|
ExitXTarget dw ;target x-pos on map
|
||||||
|
ExitYTarget dw ;target y-pos on map
|
||||||
|
|
||||||
|
Pseudo3dScrollUpdateFlag db ;if this isnt zero, update scroll table
|
||||||
|
CurrentLevel dw
|
||||||
|
PlayerState db ;current mode of player characters. 0=active battle 1=player select menu(start sitting. when start pressed for that player, switch to subroutine that is similar to battle, but without being able to fight) 2=results screen.
|
||||||
|
PlayersPresentFlags db ;flags to signalize players connected.
|
||||||
|
ActivePlayers db ;number of alive players
|
||||||
|
WinningPlayer db ;number of player that has won the match. $ff=invalid
|
||||||
|
IrqBrightnessIncDec db ;just a flag. bit0 set=increase. bit1 clear=decrease. bit8=ack/done
|
||||||
|
BrightnessEventBuffer db ;buffer event routine to jum p to after brightness inc/dec
|
||||||
|
SpcStreamFrame dw
|
||||||
|
SpcSoundEffectFlipFlag dw ;flag alternating between each sound effect upload so that spc doesnt trigger the same one twice.
|
||||||
|
BattleFinished db ;$80 if battle is finished
|
||||||
|
IntroScene3ScrollPoint dw
|
||||||
|
VideoFrames db
|
||||||
|
VideoFrameRate dw ;ANDed with framecounter. 0=60hz, 1=30hz, 3=15hz etc.
|
||||||
|
CurrentVideo db
|
||||||
|
CurrentVideoFrame db
|
||||||
|
PlayerSelectScrollCounter dw
|
||||||
|
WinningPlayerPointer dw
|
||||||
|
RandomLevelCounter db ;msb=shuffle direction. bits0-3 level number
|
||||||
|
RandomStreamCounter db ;msb=shuffle direction. bits0-3 Streamset number
|
||||||
|
SpecialReportOld db
|
||||||
|
HdmaScrollPointerBuffer dw
|
||||||
|
GravityCutOffYPos dw ;y-pos of object(with 4bit precision) that triggers delete if bigger and gravity affected
|
||||||
|
GravObjectCounter db ;counter of particle/gravity objects to create to prevent slowdown and such
|
||||||
|
MaxGravObjCount db ;max allowed particles per frame. dont create new ones if exceeded
|
||||||
|
EventJumper db ;variable to select which event to jump to in debug menu
|
||||||
|
CollisionObjPointer dw ;pointer to object that just has collided with calling obj
|
||||||
|
Reg3000WriteVar db
|
||||||
|
VIrqCounter dw
|
||||||
|
ExtIrqCounter dw
|
||||||
|
CartChecksum dw
|
||||||
|
QD16BankCount db ;number of rom banks
|
||||||
|
Qd16LoadProgress dw ;percentage of banks loaded
|
||||||
|
Qd16Flags db ;bit0=rom upload started
|
||||||
|
;bit1=header found
|
||||||
|
;bit2=irq-com mode entered
|
||||||
|
Qd16Mbit dw
|
||||||
|
VwfStringLineBreakCounter dw ;keeps track of the last <space>
|
||||||
|
VwfStringPixelCounter dw ;keeps track of position in line
|
||||||
|
VwfStringTileCounter dw ;keeps track of tile position in line
|
||||||
|
VwfStringLineCounter dw ;keeps track of position in line
|
||||||
|
VwfStringStringPointer dw ;pointer to current letter in string buffer
|
||||||
|
VwfStringLineLength db ;length of line in tiles. must be set before stringprocessor is executed
|
||||||
|
VwfStringLineNumber db ;number of lines. must be set before blablah.
|
||||||
|
VwfStringCurrentFont db
|
||||||
|
VwfEvent db ;which vwf routine to execute
|
||||||
|
VwfCurrentString dw ;15bit, which string to load
|
||||||
|
VwfTextBoxXPos db ;position of left, upper sprite of textbox
|
||||||
|
VwfTextBoxYPos db ;position of left, upper sprite of textbox
|
||||||
|
VwfTextBoxMenuPointer dw
|
||||||
|
VwfCursorObjectNumber db ;number of object in object list
|
||||||
|
VwfDrawSpeed db ;0=1 letter per frame. msb set: max speed, draw until string end command has been.
|
||||||
|
VwfDrawSpeedCounter db
|
||||||
|
VwfLineUpdateFlag ds 4
|
||||||
|
VwfSubStringStackPointer dw
|
||||||
|
ObjectFreezeFlag db ;if not zero, applicable objects should not be processed.
|
||||||
|
TextWindowFadeStatus db
|
||||||
|
TextWindow db
|
||||||
|
PercentageBuff db ;buffer for percentage display
|
||||||
|
PalEffectPointer dw ;pointer to current pal-effect
|
||||||
|
EventBuffer db
|
||||||
|
FrameWait db
|
||||||
|
SpcReportInstrBuff dw
|
||||||
|
.ENDE
|
||||||
|
|
||||||
|
.ENUM $7e0300
|
||||||
|
JoyPort1Data1Io0Buffer ds 4
|
||||||
|
JoyPort1Data2Io0Buffer ds 4
|
||||||
|
JoyPort2Data1Io0Buffer ds 4
|
||||||
|
JoyPort2Data2Io0Buffer ds 4
|
||||||
|
|
||||||
|
JoyPort1Data1Io1Buffer ds 4
|
||||||
|
JoyPort1Data2Io1Buffer ds 4
|
||||||
|
JoyPort2Data1Io1Buffer ds 4
|
||||||
|
JoyPort2Data2Io1Buffer ds 4
|
||||||
|
VectorAngleSMCode ds 9 ;8 inc/decs per frame + rtl
|
||||||
|
|
||||||
|
LoadMenuStringBuffer ds 9
|
||||||
|
PrintStringBuffer0 ds 16
|
||||||
|
;.ende
|
||||||
|
|
||||||
|
JoyPortBuffer ds 16 ;8 joypads max, word entries.
|
||||||
|
;0=port1 joy 1
|
||||||
|
;2=port1 joy 2
|
||||||
|
;4=port1 joy 3
|
||||||
|
;6=port1 joy 4
|
||||||
|
;8=port2 joy 1
|
||||||
|
;a=port2 joy 2
|
||||||
|
;c=port2 joy 3
|
||||||
|
;e=port2 joy 4
|
||||||
|
JoyPortBufferOld ds 16
|
||||||
|
JoyPortBufferTrigger ds 16
|
||||||
|
|
||||||
|
;joypad buttons:
|
||||||
|
;15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
|
||||||
|
;b y se st U D L R a x l r 0 0 0 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
PaletteBuffer ds $0200 ;bg3 palettes: buffer $0-$20 (4 different 4-color palettes, for text
|
||||||
|
Bg1MapBuffer ds $1000
|
||||||
|
Bg2MapBuffer ds $800
|
||||||
|
Bg3MapBuffer ds $0800
|
||||||
|
Bg4MapBuffer ds $1
|
||||||
|
OamZSortBuffer ds $0500 ;256 entries, each 6 bytes
|
||||||
|
OamZSortObjList ds 128*2 ;prioritized list of objects that need priority processing(2 byte relative pointers)
|
||||||
|
;ZSortOamPriorityBuffer ds $0040
|
||||||
|
OamBuffer ds $0200
|
||||||
|
OamPriorityBuffer ds $0020
|
||||||
|
DmaFifoBuffer ds $1000 ;DmaFifoEntryLength*256
|
||||||
|
ObjectList ds $0800 ;32 entries, each 32 bytes
|
||||||
|
ExitList ds $0080 ;16 entries, each 8 bytes
|
||||||
|
ColObjList ds $00c0 ;32 entries, each 4 bytes
|
||||||
|
HdmaBuffer ds $0340
|
||||||
|
HdmaBuffer1 ds $0340
|
||||||
|
HdmaBuffer2 ds $0340
|
||||||
|
HdmaBuffer3 ds $0340
|
||||||
|
HdmaBuffer4 ds $0340
|
||||||
|
HdmaBuffer5 ds $0340
|
||||||
|
HdmaDataBuffer1 ds $0400
|
||||||
|
HdmaSpcBuffer ds 200 ;streaming table, uses channel 7
|
||||||
|
TextBoxMenuBuffer ds $0040 ;8 entries * 8
|
||||||
|
SpcReportBuffer ds 16 ;8 entries, each 2 bytes
|
||||||
|
;0=none
|
||||||
|
;2=timecode
|
||||||
|
;4=channel levels
|
||||||
|
;6=special mod cmd
|
||||||
|
Hdma3dScrollBuffer ds 400 ;80 entries, each 5 bytes
|
||||||
|
WinnerArray ds 8*1
|
||||||
|
PalEffectBuffer ds $800
|
||||||
|
VwfSubStringStack ds 16*8 ;can ne nested 16 times
|
||||||
|
VwfSubstringBuffer ds 16 ;used for printing numbers
|
||||||
|
VwfStringBuffer ds $0400
|
||||||
|
VwfPlotBuffer ds $1000 ;28 tiles * 8 lines * 16bytes per tile
|
||||||
|
|
||||||
|
.ENDE
|
||||||
Loading…
x
Reference in New Issue
Block a user