add new loader
This commit is contained in:
parent
cfceee4db3
commit
ec555efafd
@ -3,7 +3,7 @@
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>currentDocument</key>
|
||||
<string>avr/usbload/shell.c</string>
|
||||
<string>avr/usbload/main.c</string>
|
||||
<key>documents</key>
|
||||
<array>
|
||||
<dict>
|
||||
@ -28,12 +28,28 @@
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>141</integer>
|
||||
<integer>88</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<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>
|
||||
<key>avr/usbload/command.h</key>
|
||||
<dict>
|
||||
@ -138,30 +154,14 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>10</integer>
|
||||
<integer>1</integer>
|
||||
<key>line</key>
|
||||
<integer>53</integer>
|
||||
<integer>62</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>25</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>
|
||||
<integer>24</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/irq.h</key>
|
||||
<dict>
|
||||
@ -198,9 +198,9 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>80</integer>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>18</integer>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
@ -214,26 +214,42 @@
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>74</integer>
|
||||
<integer>299</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<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>
|
||||
<key>avr/usbload/pwm.c</key>
|
||||
<dict>
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>25</integer>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>32</integer>
|
||||
<integer>100</integer>
|
||||
</dict>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>20</integer>
|
||||
<integer>33</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/pwm.h</key>
|
||||
<dict>
|
||||
@ -254,14 +270,14 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>20</integer>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>56</integer>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>9</integer>
|
||||
<integer>13</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/rle.c</key>
|
||||
<dict>
|
||||
@ -312,30 +328,14 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<integer>14</integer>
|
||||
<key>line</key>
|
||||
<integer>70</integer>
|
||||
<integer>235</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>61</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>
|
||||
<integer>210</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/shared_memory.h</key>
|
||||
<dict>
|
||||
@ -358,12 +358,12 @@
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>43</integer>
|
||||
<integer>0</integer>
|
||||
</dict>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>30</integer>
|
||||
<integer>289</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/shell.h</key>
|
||||
<dict>
|
||||
@ -384,30 +384,56 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>22</integer>
|
||||
<integer>9</integer>
|
||||
<key>line</key>
|
||||
<integer>287</integer>
|
||||
<integer>36</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>215</integer>
|
||||
<key>selectFrom</key>
|
||||
<integer>3</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/sram.h</key>
|
||||
<dict>
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>5</integer>
|
||||
<integer>9</integer>
|
||||
<key>line</key>
|
||||
<integer>287</integer>
|
||||
<integer>198</integer>
|
||||
</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>
|
||||
<key>column</key>
|
||||
<integer>31</integer>
|
||||
<integer>0</integer>
|
||||
<key>line</key>
|
||||
<integer>287</integer>
|
||||
<integer>85</integer>
|
||||
</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>
|
||||
<key>avr/usbload/timer.c</key>
|
||||
<dict>
|
||||
@ -456,30 +482,14 @@
|
||||
<key>caret</key>
|
||||
<dict>
|
||||
<key>column</key>
|
||||
<integer>0</integer>
|
||||
<integer>14</integer>
|
||||
<key>line</key>
|
||||
<integer>43</integer>
|
||||
<integer>71</integer>
|
||||
</dict>
|
||||
<key>columnSelection</key>
|
||||
<false/>
|
||||
<key>firstVisibleColumn</key>
|
||||
<integer>0</integer>
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>16</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>
|
||||
<integer>36</integer>
|
||||
</dict>
|
||||
<key>avr/usbload/usb_bulk.h</key>
|
||||
<dict>
|
||||
@ -579,6 +589,48 @@
|
||||
<key>firstVisibleLine</key>
|
||||
<integer>211</integer>
|
||||
</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>
|
||||
<dict>
|
||||
<key>caret</key>
|
||||
@ -642,6 +694,11 @@
|
||||
<array>
|
||||
<string>avr/usbload/sram.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/usbconfig.h</string>
|
||||
<string>avr/usbload/requests.h</string>
|
||||
@ -658,6 +715,7 @@
|
||||
<string>scripts/check_rle.py</string>
|
||||
<string>avr/usbload/pwm.h</string>
|
||||
<string>avr/usbload/shared_memory.c</string>
|
||||
<string>avr/usbload/system.c</string>
|
||||
<string>avr/usbload/command.c</string>
|
||||
<string>avr/usbload/command.h</string>
|
||||
<string>avr/usbload/irq.c</string>
|
||||
@ -715,28 +773,19 @@
|
||||
<true/>
|
||||
<key>subItems</key>
|
||||
<dict>
|
||||
<key>qdinc</key>
|
||||
<dict>
|
||||
<key>isExpanded</key>
|
||||
<true/>
|
||||
<key>subItems</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
<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>
|
||||
<key>isExpanded</key>
|
||||
<true/>
|
||||
<key>subItems</key>
|
||||
<dict/>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
</dict>
|
||||
<dict/>
|
||||
</dict>
|
||||
</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