diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2016-06-12 20:08:57 +0200 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2016-06-12 20:08:57 +0200 |
| commit | ba07c2bc98fdba991b6d6444d57f0f897cf5959f (patch) | |
| tree | 6ff34bf1bf181a6eebcd59bbeba2ad05ffe4408b | |
| parent | 847d1a917f6cb17493c66398ce4ce53b89d8c438 (diff) | |
| download | fx-matris-master.tar.gz fx-matris-master.zip | |
| -rw-r--r-- | AddinInfo.txt | 12 | ||||
| -rw-r--r-- | Debug/Addin.mak | 181 | ||||
| -rw-r--r-- | Debug/Drawing.lst | 71 | ||||
| -rw-r--r-- | Debug/FXADDINror.abs | bin | 0 -> 43564 bytes | |||
| -rw-r--r-- | Debug/FXADDINror.bin | bin | 0 -> 29464 bytes | |||
| -rw-r--r-- | Debug/FXADDINror.dbg | bin | 0 -> 34776 bytes | |||
| -rw-r--r-- | Debug/FXADDINror.fsy | 293 | ||||
| -rw-r--r-- | Debug/FXADDINror.map | 1025 | ||||
| -rw-r--r-- | Debug/FuckinRev.lst | 71 | ||||
| -rw-r--r-- | Debug/Matris.lst | 3305 | ||||
| -rw-r--r-- | Debug/Matris.obj | bin | 0 -> 32692 bytes | |||
| -rw-r--r-- | Debug/SYSCALLS.obj | bin | 0 -> 6136 bytes | |||
| -rw-r--r-- | Debug/draw.lst | 5879 | ||||
| -rw-r--r-- | Debug/draw.obj | bin | 0 -> 26328 bytes | |||
| -rw-r--r-- | Debug/global.lst | 203 | ||||
| -rw-r--r-- | Debug/global.obj | bin | 0 -> 3456 bytes | |||
| -rw-r--r-- | Debug/key.lst | 335 | ||||
| -rw-r--r-- | Debug/key.obj | bin | 0 -> 4472 bytes | |||
| -rw-r--r-- | FXSH_Build.bat | 22 | ||||
| -rw-r--r-- | INIT/CasioRAM.mem | bin | 0 -> 63772 bytes | |||
| -rw-r--r-- | INIT/CasioRAMCPU.mem | bin | 0 -> 80 bytes | |||
| -rw-r--r-- | INIT/CasioROM.mem | bin | 0 -> 1537164 bytes | |||
| -rw-r--r-- | INIT/CasioUserROM.mem | bin | 0 -> 39756 bytes | |||
| -rw-r--r-- | MATRIS.G1A | bin | 29976 -> 29976 bytes | |||
| -rw-r--r-- | Matris.c | 1272 | ||||
| -rw-r--r-- | Matris.dlr | 315 | ||||
| -rw-r--r-- | Matris.dlw | 265 | ||||
| -rw-r--r-- | Matris.g1w | 23 | ||||
| -rw-r--r-- | Matris.rar | bin | 0 -> 24159 bytes | |||
| -rw-r--r-- | MatrisIcon.bmp | bin | 0 -> 206 bytes | |||
| -rw-r--r-- | MatrisSource.c | 1154 | ||||
| -rw-r--r-- | SDCard/SCORE.mat | bin | 0 -> 21 bytes | |||
| -rw-r--r-- | Sprites.h | 884 | ||||
| -rw-r--r-- | draw.c | 1310 | ||||
| -rw-r--r-- | draw.h | 28 | ||||
| -rw-r--r-- | eActivityIcon.bmp | bin | 0 -> 106 bytes | |||
| -rw-r--r-- | global.c | 66 | ||||
| -rw-r--r-- | global.h | 112 | ||||
| -rw-r--r-- | key.c | 78 | ||||
| -rw-r--r-- | key.h | 6 | ||||
| -rw-r--r-- | matris.rar | bin | 0 -> 24158 bytes | |||
| -rw-r--r-- | src/MATRIS.G1A | bin | 0 -> 29976 bytes | |||
| -rw-r--r-- | src/MainIcon.bmp | bin | 0 -> 138 bytes | |||
| -rw-r--r-- | src/Matris.c | 635 | ||||
| -rw-r--r-- | src/SYSCALLS.src | 65 | ||||
| -rw-r--r-- | src/Sprites.h | 443 | ||||
| -rw-r--r-- | src/draw.c | 655 | ||||
| -rw-r--r-- | src/draw.h | 15 | ||||
| -rw-r--r-- | src/global.c | 33 | ||||
| -rw-r--r-- | src/global.h | 57 | ||||
| -rw-r--r-- | src/key.c | 39 | ||||
| -rw-r--r-- | src/key.h | 4 |
52 files changed, 16977 insertions, 1879 deletions
diff --git a/AddinInfo.txt b/AddinInfo.txt new file mode 100644 index 0000000..4aeb735 --- /dev/null +++ b/AddinInfo.txt @@ -0,0 +1,12 @@ +//------------------------------------------------------------------ +// Addin-Application header control file, created with the CASIO SDK +//------------------------------------------------------------------ +[OUTPUT] : "MATRIS.G1A" +[BINDATA] : "FXADDINror.bin" +[DISPNAME] : "Matris" +[APPNAME] : "@MATRIS" +[VERSION] : "02.00.0000" +[APL_ICON] : "MainIcon.bmp" +[MODULE_NUM] : 0 +[MOD1_TITLE] : "Matris" +[MOD1_ICON] : "eActivityIcon.bmp" diff --git a/Debug/Addin.mak b/Debug/Addin.mak new file mode 100644 index 0000000..a768016 --- /dev/null +++ b/Debug/Addin.mak @@ -0,0 +1,181 @@ +################################################ +# Make file for CASIO fx-9860G SDK Addin +# +############################ +# Directory defines +TCDIR = G:\Casio SDK\OS\SH +OSDIR = G:\Casio SDK\OS +APPDIR = G:\Casio SDK\Projekte\Matris +OUTDIR = G:\Casio SDK\Projekte\Matris\Debug + +################ +# Main Defines +SH_EXEDIR=$(TCDIR)\bin + +# Hitachi SH C/C++ Compiler02 phase +SHCC02_EXE=shc.exe +SHCC02_DEP="$(OSDIR)\FX\include\fxlib.h" "Sprites.h" "key.h" "draw.h" "global.h" + +# Hitachi SH Assembler03 phase +SHASM03_EXE=asmsh.exe + +# Hitachi OptLinker04 phase +SHLINK04_EXE=Optlnk.exe +SHLINK04_DEP="$(OSDIR)\FX\lib\fx9860G_library.lib" +SHLINK04_DEP2="$(OSDIR)\FX\lib\setup.obj" +EPSILON="$(OSDIR)\FX\lib\revolution.lib" +####################### +# Files to build +FILE0=Matris +FILESRC0="$(APPDIR)\$(FILE0).c" +FILEOBJ0="$(OUTDIR)\$(FILE0).obj" +FILE1=SYSCALLS +FILESRC1="$(APPDIR)\$(FILE1).src" +FILEOBJ1="$(OUTDIR)\$(FILE1).obj" +FILE2=key +FILESRC2="$(APPDIR)\$(FILE2).c" +FILEOBJ2="$(OUTDIR)\$(FILE2).obj" +FILE3=draw +FILESRC3="$(APPDIR)\$(FILE3).c" +FILEOBJ3="$(OUTDIR)\$(FILE3).obj" +FILE4=global +FILESRC4="$(APPDIR)\$(FILE4).c" +FILEOBJ4="$(OUTDIR)\$(FILE4).obj" +RFILE=FXADDINror +USERALLOBJ=$(FILEOBJ0) $(FILEOBJ1) $(FILEOBJ2) $(FILEOBJ3) $(FILEOBJ4) + +####################### +# nmake "all" statement + +ALL: SH_ENV \ + $(USERALLOBJ) \ + $(OUTDIR)\$(RFILE).bin \ + +#################### +# Description blocks + +!MESSAGE %3#C$z`&'0? +!MESSAGE +!MESSAGE Executing Hitachi SH C/C++ Compiler/Assembler phase +!MESSAGE + +SH_ENV : + set SHC_INC=$(TCDIR)\include + set PATH=$(TCDIR)\bin + set SHC_LIB=$(TCDIR)\bin + set SHC_TMP=$(OUTDIR) + +$(FILEOBJ0) : $(FILESRC0) $(SHCC02_DEP) + "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<< +-cpu=sh3 +-include="$(OSDIR)\FX\include","$(APPDIR)" +-objectfile=$(FILEOBJ0) +-show=source +-listfile="$(OUTDIR)\$(FILE0).lst" +-speed +-noinline +-chgincpath +-errorpath +$(FILESRC0) +-lang=c +-nologo +-debug +<< + +$(FILEOBJ2) : $(FILESRC2) $(SHCC02_DEP) + "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<< +-cpu=sh3 +-include="$(OSDIR)\FX\include","$(APPDIR)" +-objectfile=$(FILEOBJ2) +-show=source +-listfile="$(OUTDIR)\$(FILE2).lst" +-speed +-noinline +-chgincpath +-errorpath +$(FILESRC2) +-lang=c +-nologo +-debug +<< + +$(FILEOBJ3) : $(FILESRC3) $(SHCC02_DEP) + "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<< +-cpu=sh3 +-include="$(OSDIR)\FX\include","$(APPDIR)" +-objectfile=$(FILEOBJ3) +-show=source +-listfile="$(OUTDIR)\$(FILE3).lst" +-speed +-noinline +-chgincpath +-errorpath +$(FILESRC3) +-lang=c +-nologo +-debug +<< + +$(FILEOBJ4) : $(FILESRC4) $(SHCC02_DEP) + "$(SH_EXEDIR)\$(SHCC02_EXE)" -subcommand=<< +-cpu=sh3 +-include="$(OSDIR)\FX\include","$(APPDIR)" +-objectfile=$(FILEOBJ4) +-show=source +-listfile="$(OUTDIR)\$(FILE4).lst" +-speed +-noinline +-chgincpath +-errorpath +$(FILESRC4) +-lang=c +-nologo +-debug +<< + +$(FILEOBJ1) : $(FILESRC1) + "$(SH_EXEDIR)\$(SHASM03_EXE)" -subcommand=<< +$(FILESRC1) +-cpu=sh3 +-endian=big +-round=zero +-denormalize=off +-include="$(APPDIR)" +-include="$(OSDIR)\FX\include" +-debug +-object=$(FILEOBJ1) +-literal=pool,branch,jump,return +-nologo +-chgincpath +-errorpath +<< + +!MESSAGE +!MESSAGE Executing Hitachi OptLinker04 phase +!MESSAGE + +"$(OUTDIR)\$(RFILE).bin" : $(USERALLOBJ) $(SHLINK04_DEP2) $(SHLINK04_DEP) + "$(SH_EXEDIR)\$(SHLINK04_EXE)" -subcommand=<< +noprelink +sdebug +rom D=R +nomessage +list "$(OUTDIR)\$(RFILE).map" +show symbol +nooptimize +start P_TOP,P,C,D,C$VTBL,C$INIT/0300200,B_BR_Size,B,R/08100000 +fsymbol P +nologo +input $(USERALLOBJ) +input $(SHLINK04_DEP2) +library $(SHLINK04_DEP) +library $(EPSILON) +output "$(OUTDIR)\$(RFILE).abs" +-nomessage=1100 +end +input "$(OUTDIR)\$(RFILE).abs" +form binary +output "$(OUTDIR)\$(RFILE).bin" +exit +<< + diff --git a/Debug/Drawing.lst b/Debug/Drawing.lst new file mode 100644 index 0000000..1edd86a --- /dev/null +++ b/Debug/Drawing.lst @@ -0,0 +1,71 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 22-Aug-2012 10:45:29 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 1
+NUMBER OF WARNINGS: 0
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmkA5DF.tmp
+
diff --git a/Debug/FXADDINror.abs b/Debug/FXADDINror.abs Binary files differnew file mode 100644 index 0000000..bbf4490 --- /dev/null +++ b/Debug/FXADDINror.abs diff --git a/Debug/FXADDINror.bin b/Debug/FXADDINror.bin Binary files differnew file mode 100644 index 0000000..48dd1ad --- /dev/null +++ b/Debug/FXADDINror.bin diff --git a/Debug/FXADDINror.dbg b/Debug/FXADDINror.dbg Binary files differnew file mode 100644 index 0000000..d3096b1 --- /dev/null +++ b/Debug/FXADDINror.dbg diff --git a/Debug/FXADDINror.fsy b/Debug/FXADDINror.fsy new file mode 100644 index 0000000..2e4586f --- /dev/null +++ b/Debug/FXADDINror.fsy @@ -0,0 +1,293 @@ +;HITACHI OPTIMIZING LINKAGE EDITOR GENERATED FILE 2013.04.02
+;fsymbol = P
+
+;SECTION NAME = P
+ .export _APP_EnableRestart
+_APP_EnableRestart: .equ h'00300214
+ .export _kiss
+_kiss: .equ h'00300266
+ .export _seedkiss
+_seedkiss: .equ h'003002c2
+ .export _drawbuffer
+_drawbuffer: .equ h'003002d2
+ .export _RestGray
+_RestGray: .equ h'00300350
+ .export _Disconnect
+_Disconnect: .equ h'0030036e
+ .export _TeacherMode
+_TeacherMode: .equ h'00300380
+ .export _round
+_round: .equ h'00300398
+ .export _clrbuffer
+_clrbuffer: .equ h'003003c2
+ .export _CreateBlock
+_CreateBlock: .equ h'003003ca
+ .export _ResetValues
+_ResetValues: .equ h'00300468
+ .export _Transfer
+_Transfer: .equ h'003005cc
+ .export _receive
+_receive: .equ h'00300732
+ .export _Connect
+_Connect: .equ h'00300768
+ .export _SwapPieces
+_SwapPieces: .equ h'0030082c
+ .export _Rotate
+_Rotate: .equ h'00300888
+ .export _MoveBlock
+_MoveBlock: .equ h'003008be
+ .export _CheckPoints
+_CheckPoints: .equ h'00300968
+ .export _ReadKey
+_ReadKey: .equ h'00300cc0
+ .export _Main
+_Main: .equ h'00300d58
+ .export _CallMain
+_CallMain: .equ h'00300e46
+ .export _ReadMenuKeys
+_ReadMenuKeys: .equ h'00300f26
+ .export _AddIn_main
+_AddIn_main: .equ h'00300f6c
+ .export _AllClr_DD
+_AllClr_DD: .equ h'0030123c
+ .export _PutKey
+_PutKey: .equ h'0030135c
+ .export _App_SYSTEM
+_App_SYSTEM: .equ h'0030143c
+ .export _RTC_GetTicks
+_RTC_GetTicks: .equ h'003011ec
+ .export _PowerOff
+_PowerOff: .equ h'0030133c
+ .export _Serial_BufferedTransmitOneByte
+_Serial_BufferedTransmitOneByte: .equ h'003011ac
+ .export _LongToAsc
+_LongToAsc: .equ h'0030147c
+ .export _Reboot
+_Reboot: .equ h'003012fc
+ .export _App_DYNA
+_App_DYNA: .equ h'0030139c
+ .export _App_EQUA
+_App_EQUA: .equ h'003013ac
+ .export _itoa
+_itoa: .equ h'003012dc
+ .export _Timer_Start
+_Timer_Start: .equ h'003012cc
+ .export _App_LINK
+_App_LINK: .equ h'003013ec
+ .export _PutDisp_DD
+_PutDisp_DD: .equ h'0030121c
+ .export _Serial_ReadOneByte
+_Serial_ReadOneByte: .equ h'0030119c
+ .export _GetMiniGlyph
+_GetMiniGlyph: .equ h'0030149c
+ .export _GlibGetOSVersionInfo
+_GlibGetOSVersionInfo: .equ h'0030146c
+ .export _BCD_SetAsInt
+_BCD_SetAsInt: .equ h'0030145c
+ .export _USB_CaptureDisplay
+_USB_CaptureDisplay: .equ h'0030148c
+ .export _App_FINANCE
+_App_FINANCE: .equ h'003013cc
+ .export _Serial_Close
+_Serial_Close: .equ h'003011cc
+ .export _EditExpression
+_EditExpression: .equ h'003012ec
+ .export _App_RUN_MAT
+_App_RUN_MAT: .equ h'0030141c
+ .export _Timer_Install
+_Timer_Install: .equ h'003012ac
+ .export _RTC_GetTime
+_RTC_GetTime: .equ h'0030132c
+ .export _locate
+_locate: .equ h'0030128c
+ .export _App_PROG
+_App_PROG: .equ h'003013bc
+ .export _Sleep
+_Sleep: .equ h'0030126c
+ .export _App_GRAPH_TABLE
+_App_GRAPH_TABLE: .equ h'003013dc
+ .export _Disp_GetVRAMPtr
+_Disp_GetVRAMPtr: .equ h'0030120c
+ .export _ShapeToDD
+_ShapeToDD: .equ h'0030136c
+ .export _App_CONICS
+_App_CONICS: .equ h'0030138c
+ .export _RTC_SetDateTime
+_RTC_SetDateTime: .equ h'0030130c
+ .export _App_RECUR
+_App_RECUR: .equ h'0030140c
+ .export _Serial_ClearReceiveBuffer
+_Serial_ClearReceiveBuffer: .equ h'003011dc
+ .export _InputString
+_InputString: .equ h'0030137c
+ .export _GetKey
+_GetKey: .equ h'0030127c
+ .export _RTC_Reset
+_RTC_Reset: .equ h'0030131c
+ .export _DrawLineVRAM
+_DrawLineVRAM: .equ h'0030122c
+ .export _Print
+_Print: .equ h'0030129c
+ .export _KBD_PRGM_GetKey
+_KBD_PRGM_GetKey: .equ h'003011fc
+ .export _AllClr_VRAM
+_AllClr_VRAM: .equ h'0030124c
+ .export _App_RUN_STAT
+_App_RUN_STAT: .equ h'0030142c
+ .export _Serial_Open
+_Serial_Open: .equ h'003011bc
+ .export _AllClr_DDVRAM
+_AllClr_DDVRAM: .equ h'0030125c
+ .export _App_MEMORY
+_App_MEMORY: .equ h'003013fc
+ .export _Timer_Uninstall
+_Timer_Uninstall: .equ h'003012bc
+ .export _Serial_WriteByte
+_Serial_WriteByte: .equ h'0030134c
+ .export _InputDateDialog
+_InputDateDialog: .equ h'0030144c
+ .export _OSVersionAsInt
+_OSVersionAsInt: .equ h'003014ac
+ .export _KeyDown
+_KeyDown: .equ h'003014ea
+ .export _pixel
+_pixel: .equ h'003015a8
+ .export _pixelgray
+_pixelgray: .equ h'00301616
+ .export _line
+_line: .equ h'00301680
+ .export _drawChar
+_drawChar: .equ h'0030177e
+ .export _drawString
+_drawString: .equ h'0030180c
+ .export _drawNumber
+_drawNumber: .equ h'00301842
+ .export _fillbox
+_fillbox: .equ h'003018ce
+ .export _normalfillbox
+_normalfillbox: .equ h'0030195c
+ .export _DrawSprite
+_DrawSprite: .equ h'003019da
+ .export _DrawBlock
+_DrawBlock: .equ h'003024fc
+ .export ___LINK_PROTECT
+___LINK_PROTECT: .equ h'00302eac
+ .export _SetQuitHandler
+_SetQuitHandler: .equ h'00302eb0
+ .export _OnAppCloseDefault
+_OnAppCloseDefault: .equ h'00302eb6
+ .export __INITSCT_ADDIN
+__INITSCT_ADDIN: .equ h'00302f0a
+ .export _INIT_ADDIN_APPLICATION
+_INIT_ADDIN_APPLICATION: .equ h'00302f52
+ .export __addd
+__addd: .equ h'00303098
+ .export __subdr
+__subdr: .equ h'00302fe0
+ .export __subd
+__subd: .equ h'00302fc8
+ .export __dtoi
+__dtoi: .equ h'00303358
+ .export __dtou
+__dtou: .equ h'00303358
+ .export __stod
+__stod: .equ h'003033e4
+ .export __divls
+__divls: .equ h'0030346c
+ .export __divlu
+__divlu: .equ h'00303520
+ .export __modls
+__modls: .equ h'003035c8
+ .export __modlu
+__modlu: .equ h'00303690
+ .export _memcpy
+_memcpy: .equ h'00303748
+ .export _memset
+_memset: .equ h'00303808
+ .export _sprintf
+_sprintf: .equ h'00303820
+ .export _Bdel_cychdr
+_Bdel_cychdr: .equ h'0030385c
+ .export _BfileFLS_CloseFile
+_BfileFLS_CloseFile: .equ h'0030386c
+ .export _Bkey_Set_RepeatTime_Default
+_Bkey_Set_RepeatTime_Default: .equ h'0030387c
+ .export _CallbackAtQuitMainFunction
+_CallbackAtQuitMainFunction: .equ h'0030388c
+ .export _flsFindClose
+_flsFindClose: .equ h'0030389c
+ .export _free
+_free: .equ h'003038ac
+ .export _GLibAddinAplExecutionCheck
+_GLibAddinAplExecutionCheck: .equ h'003038bc
+ .export _Hmem_SetMMU
+_Hmem_SetMMU: .equ h'003038cc
+ .export _malloc
+_malloc: .equ h'003038dc
+ .export _PopUpWin
+_PopUpWin: .equ h'003038ec
+ .export _PrintC
+_PrintC: .equ h'003038fc
+ .export __fmtout
+__fmtout: .equ h'0030390c
+ .export __eqd
+__eqd: .equ h'003049f8
+ .export __its
+__its: .equ h'00304a8c
+ .export __xti
+__xti: .equ h'00304bbc
+ .export _strlen
+_strlen: .equ h'00304e4c
+ .export __allzero
+__allzero: .equ h'00304e5c
+ .export __calcnpw
+__calcnpw: .equ h'00304e7c
+ .export __log10
+__log10: .equ h'00304f7c
+ .export __lsfts
+__lsfts: .equ h'00305244
+ .export __pow5
+__pow5: .equ h'00305290
+ .export __rsfts
+__rsfts: .equ h'003052b4
+ .export __sub
+__sub: .equ h'0030530c
+ .export __umemcmp
+__umemcmp: .equ h'003053a0
+ .export __unpack
+__unpack: .equ h'003053d4
+ .export _memcmp
+_memcmp: .equ h'00305470
+ .export __itod
+__itod: .equ h'003054a4
+ .export __ltd
+__ltd: .equ h'003054f8
+ .export __muld
+__muld: .equ h'00305644
+ .export __ned
+__ned: .equ h'003057b4
+ .export __divws
+__divws: .equ h'00305848
+ .export __div64
+__div64: .equ h'00305898
+ .export __duchek
+__duchek: .equ h'00305a2c
+ .export __lsft
+__lsft: .equ h'00305a5c
+ .export __mult64
+__mult64: .equ h'00305aa4
+ .export __power
+__power: .equ h'00305b14
+ .export __rnd
+__rnd: .equ h'00305c68
+ .export __setsbit
+__setsbit: .equ h'00305d54
+ .export __add
+__add: .equ h'00305dd8
+ .export __mult
+__mult: .equ h'00305e34
+ .export __pow10
+__pow10: .equ h'00305f10
+ .export __rsft
+__rsft: .equ h'00305fa8
+ .end
diff --git a/Debug/FXADDINror.map b/Debug/FXADDINror.map new file mode 100644 index 0000000..bda7a9f --- /dev/null +++ b/Debug/FXADDINror.map @@ -0,0 +1,1025 @@ +Hitachi Optimizing Linkage Editor (Ver. 7.1.03.000)02-Apr-2013 12:26:14
+
+*** Options ***
+
+-subcommand=C:\Users\Timo\AppData\Local\Temp\hmk4DF6.tmp
+noprelink
+sdebug
+rom D=R
+nomessage
+list "G:\Casio SDK\Projekte\Matris\Debug\FXADDINror.map"
+show symbol
+nooptimize
+start P_TOP,P,C,D,C$VTBL,C$INIT/0300200,B_BR_Size,B,R/08100000
+fsymbol P
+nologo
+input "G:\Casio SDK\Projekte\Matris\Debug\Matris.obj" "G:\Casio SDK\Projekte\Matris\Debug\SYSCALLS.obj" "G:\Casio SDK\Projekte\Matris\Debug\key.obj" "G:\Casio SDK\Projekte\Matris\Debug\draw.obj" "G:\Casio SDK\Projekte\Matris\Debug\global.obj"
+input "G:\Casio SDK\OS\FX\lib\setup.obj"
+library "G:\Casio SDK\OS\FX\lib\fx9860G_library.lib"
+library "G:\Casio SDK\OS\FX\lib\revolution.lib"
+output "G:\Casio SDK\Projekte\Matris\Debug\FXADDINror.abs"
+-nomessage=1100
+end
+
+*** Error information ***
+
+*** Mapping List ***
+
+SECTION START END SIZE ALIGN
+
+P_TOP
+ 00300200 00300213 14 4
+P
+ 00300214 00305ff1 5dde 4
+C
+ 00305ff4 0030638b 398 4
+D
+ 0030638c 00307517 118c 4
+B_BR_Size
+ 08100000 08100003 4 4
+B
+ 08100004 08100023 20 4
+R
+ 08100024 081011af 118c 4
+
+*** Symbol List ***
+
+SECTION=
+FILE= START END SIZE
+ SYMBOL ADDR SIZE INFO COUNTS OPT
+
+SECTION=P_TOP
+FILE=G:\Casio SDK\Projekte\Matris\Debug\Matris.obj
+ 00300200 00300213 14
+ _InitializeSystem
+ 00300200 14 func ,g *
+
+SECTION=P
+FILE=G:\Casio SDK\Projekte\Matris\Debug\Matris.obj
+ 00300214 0030119b f88
+ _APP_EnableRestart
+ 00300214 52 func ,g *
+ _kiss
+ 00300266 5c func ,g *
+ _seedkiss
+ 003002c2 10 func ,g *
+ _drawbuffer
+ 003002d2 7e func ,g *
+ _RestGray
+ 00300350 1e func ,g *
+ _Disconnect
+ 0030036e 12 func ,g *
+ _TeacherMode
+ 00300380 18 func ,g *
+ _round
+ 00300398 2a func ,g *
+ _clrbuffer
+ 003003c2 8 func ,g *
+ _CreateBlock
+ 003003ca 9e func ,g *
+ _ResetValues
+ 00300468 164 func ,g *
+ _Transfer
+ 003005cc 166 func ,g *
+ _receive
+ 00300732 36 func ,g *
+ _Connect
+ 00300768 c4 func ,g *
+ _SwapPieces
+ 0030082c 5c func ,g *
+ _Rotate
+ 00300888 36 func ,g *
+ _MoveBlock
+ 003008be aa func ,g *
+ _CheckPoints
+ 00300968 358 func ,g *
+ _ReadKey
+ 00300cc0 98 func ,g *
+ _Main
+ 00300d58 ee func ,g *
+ _CallMain
+ 00300e46 e0 func ,g *
+ _ReadMenuKeys
+ 00300f26 46 func ,g *
+ _AddIn_main
+ 00300f6c 230 func ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\SYSCALLS.obj
+ 0030119c 003014ab 310
+ _Serial_ReadOneByte
+ 0030119c 0 none ,g *
+ _Serial_BufferedTransmitOneByte
+ 003011ac 0 none ,g *
+ _Serial_Open
+ 003011bc 0 none ,g *
+ _Serial_Close
+ 003011cc 0 none ,g *
+ _Serial_ClearReceiveBuffer
+ 003011dc 0 none ,g *
+ _RTC_GetTicks
+ 003011ec 0 none ,g *
+ _KBD_PRGM_GetKey
+ 003011fc 0 none ,g *
+ _Disp_GetVRAMPtr
+ 0030120c 0 none ,g *
+ _PutDisp_DD
+ 0030121c 0 none ,g *
+ _DrawLineVRAM
+ 0030122c 0 none ,g *
+ _AllClr_DD
+ 0030123c 0 none ,g *
+ _AllClr_VRAM
+ 0030124c 0 none ,g *
+ _AllClr_DDVRAM
+ 0030125c 0 none ,g *
+ _Sleep
+ 0030126c 0 none ,g *
+ _GetKey
+ 0030127c 0 none ,g *
+ _locate
+ 0030128c 0 none ,g *
+ _Print
+ 0030129c 0 none ,g *
+ _Timer_Install
+ 003012ac 0 none ,g *
+ _Timer_Uninstall
+ 003012bc 0 none ,g *
+ _Timer_Start
+ 003012cc 0 none ,g *
+ _itoa
+ 003012dc 0 none ,g *
+ _EditExpression
+ 003012ec 0 none ,g *
+ _Reboot
+ 003012fc 0 none ,g *
+ _RTC_SetDateTime
+ 0030130c 0 none ,g *
+ _RTC_Reset
+ 0030131c 0 none ,g *
+ _RTC_GetTime
+ 0030132c 0 none ,g *
+ _PowerOff
+ 0030133c 0 none ,g *
+ _Serial_WriteByte
+ 0030134c 0 none ,g *
+ _PutKey
+ 0030135c 0 none ,g *
+ _ShapeToDD
+ 0030136c 0 none ,g *
+ _InputString
+ 0030137c 0 none ,g *
+ _App_CONICS
+ 0030138c 0 none ,g *
+ _App_DYNA
+ 0030139c 0 none ,g *
+ _App_EQUA
+ 003013ac 0 none ,g *
+ _App_PROG
+ 003013bc 0 none ,g *
+ _App_FINANCE
+ 003013cc 0 none ,g *
+ _App_GRAPH_TABLE
+ 003013dc 0 none ,g *
+ _App_LINK
+ 003013ec 0 none ,g *
+ _App_MEMORY
+ 003013fc 0 none ,g *
+ _App_RECUR
+ 0030140c 0 none ,g *
+ _App_RUN_MAT
+ 0030141c 0 none ,g *
+ _App_RUN_STAT
+ 0030142c 0 none ,g *
+ _App_SYSTEM
+ 0030143c 0 none ,g *
+ _InputDateDialog
+ 0030144c 0 none ,g *
+ _BCD_SetAsInt
+ 0030145c 0 none ,g *
+ _GlibGetOSVersionInfo
+ 0030146c 0 none ,g *
+ _LongToAsc
+ 0030147c 0 none ,g *
+ _USB_CaptureDisplay
+ 0030148c 0 none ,g *
+ _GetMiniGlyph
+ 0030149c 0 none ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\key.obj
+ 003014ac 003015a7 fc
+ _OSVersionAsInt
+ 003014ac 3e func ,g *
+ _KeyDown
+ 003014ea be func ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\draw.obj
+ 003015a8 00302eab 1904
+ _pixel
+ 003015a8 6e func ,g *
+ _pixelgray
+ 00301616 6a func ,g *
+ _line
+ 00301680 fe func ,g *
+ _drawChar
+ 0030177e 8e func ,g *
+ _drawString
+ 0030180c 36 func ,g *
+ _drawNumber
+ 00301842 8c func ,g *
+ _fillbox
+ 003018ce 8e func ,g *
+ _normalfillbox
+ 0030195c 7e func ,g *
+ _DrawSprite
+ 003019da b22 func ,g *
+ _DrawBlock
+ 003024fc 9b0 func ,g *
+FILE=G:\Casio SDK\OS\FX\lib\setup.obj
+ 00302eac 00302fc7 11c
+ ___LINK_PROTECT
+ 00302eac 4 func ,g *
+ _SetQuitHandler
+ 00302eb0 6 func ,g *
+ _OnAppCloseDefault
+ 00302eb6 54 func ,g *
+ __INITSCT_ADDIN
+ 00302f0a 48 func ,g *
+ _INIT_ADDIN_APPLICATION
+ 00302f52 76 func ,g *
+FILE=r_addd
+ 00302fc8 00303357 390
+ __subd
+ 00302fc8 0 none ,g *
+ __subdr
+ 00302fe0 0 none ,g *
+ exception1
+ 00302ff8 0 none ,l *
+ return_NaN
+ 0030300c 0 none ,l *
+ return_inf
+ 00303014 0 none ,l *
+ exception2
+ 00303018 0 none ,l *
+ p2_denorm_check
+ 0030302c 0 none ,l *
+ p1_denorm
+ 00303038 0 none ,l *
+ return_p2
+ 00303044 0 none ,l *
+ return_p1
+ 0030304c 0 none ,l *
+ p1_normalize
+ 0030305a 0 none ,l *
+ p1_norm_loop
+ 00303064 0 none ,l *
+ end_p1_norm
+ 0030306e 0 none ,l *
+ p2_normalize
+ 0030306e 0 none ,l *
+ p2_norm_loop
+ 00303078 0 none ,l *
+ end_p2_norm
+ 00303082 0 none ,l *
+ swap_end
+ 0030308a 0 none ,l *
+ return_zero
+ 0030308e 0 none ,l *
+ __addd
+ 00303098 0 none ,g *
+ sub_in
+ 003030aa 0 none ,l *
+ rotation
+ 003030ca 0 none ,l *
+ exception_return
+ 003030f6 0 none ,l *
+ sftr1
+ 00303138 0 none ,l *
+ e_sftr31
+ 0030313c 0 none ,l *
+ e_sftr55
+ 00303162 0 none ,l *
+ sftr_loop
+ 00303168 0 none ,l *
+ end_sftr
+ 00303170 0 none ,l *
+ mantissa_sub
+ 00303194 0 none ,l *
+ man_sub1
+ 0030319c 0 none ,l *
+ normalize
+ 003031aa 0 none ,l *
+ norm32_end
+ 003031b4 0 none ,l *
+ norm16_end
+ 003031c4 0 none ,l *
+ over_norm
+ 003031ca 0 none ,l *
+ overnorm_end
+ 003031f6 0 none ,l *
+ norm_loop
+ 003031fc 0 none ,l *
+ end_calc
+ 00303224 0 none ,l *
+ end_norm
+ 00303224 0 none ,l *
+ denormalize_loop
+ 0030322c 0 none ,l *
+ round
+ 00303234 0 none ,l *
+ end_denormal
+ 00303234 0 none ,l *
+ round_carry
+ 0030324c 0 none ,l *
+ end_round
+ 00303252 0 none ,l *
+ return_value
+ 00303252 0 none ,l *
+ return
+ 00303270 0 none ,l *
+ plus_zero
+ 00303290 0 none ,l *
+ swap
+ 0030329a 0 none ,l *
+ EXP_INF
+ 003032b4 0 none ,l *
+ MMASK
+ 003032b8 0 none ,l *
+ MSB
+ 003032bc 0 none ,l *
+ LOWMASK
+ 003032c0 0 none ,l *
+ CARRY_CHECK
+ 003032c4 0 none ,l *
+ NORMAL
+ 003032c8 0 none ,l *
+ SIGN
+ 003032cc 0 none ,l *
+ HALF
+ 003032d0 0 none ,l *
+ sftrtbl
+ 003032d4 0 none ,l *
+FILE=r_dtoi
+ 00303358 003033e3 8c
+ __dtou
+ 00303358 0 none ,g *
+ __dtoi
+ 00303358 0 none ,g *
+ loop_sftl
+ 00303398 0 none ,l *
+ shift_low
+ 003033a2 0 none ,l *
+ shift_low1
+ 003033aa 0 none ,l *
+ shift_r
+ 003033b4 0 none ,l *
+ shift_r1
+ 003033b6 0 none ,l *
+ end_shift
+ 003033bc 0 none ,l *
+ return
+ 003033c2 0 none ,l *
+ end_nagate
+ 003033c2 0 none ,l *
+ return_zero
+ 003033d0 0 none ,l *
+ EXP_INF
+ 003033d4 0 none ,l *
+ MMASK
+ 003033d8 0 none ,l *
+ MSB
+ 003033dc 0 none ,l *
+ BIAS
+ 003033e0 0 none ,l *
+FILE=r_stod
+ 003033e4 0030346b 88
+ __stod
+ 003033e4 0 none ,g *
+ exception_return
+ 00303402 0 none ,l *
+ pack
+ 00303406 0 none ,l *
+ return
+ 00303422 0 none ,l *
+ exception1
+ 00303432 0 none ,l *
+ return_NaN
+ 0030343c 0 none ,l *
+ exception2
+ 00303442 0 none ,l *
+ p1_norm_loop
+ 0030344a 0 none ,l *
+ end_p1_norm
+ 00303450 0 none ,l *
+ return_zero
+ 00303454 0 none ,l *
+ EXP_INF
+ 00303458 0 none ,l *
+ MMASK
+ 0030345c 0 none ,l *
+ RET_INF
+ 00303460 0 none ,l *
+ NAN
+ 00303464 0 none ,l *
+ DEF_BIAS
+ 00303468 0 none ,l *
+FILE=__divls
+ 0030346c 0030351f b4
+ __divls
+ 0030346c 0 none ,g *
+ divls_zero
+ 0030350a 0 none ,l *
+ A_errno
+ 00303518 0 none ,l *
+ n_zerono
+ 0030351c 0 none ,l *
+FILE=__divlu
+ 00303520 003035c7 a8
+ __divlu
+ 00303520 0 none ,g *
+ divlu_zero
+ 003035b2 0 none ,l *
+ A_errno
+ 003035c0 0 none ,l *
+ n_zerono
+ 003035c4 0 none ,l *
+FILE=__modls
+ 003035c8 0030368f c8
+ __modls
+ 003035c8 0 none ,g *
+ modls_L
+ 0030366e 0 none ,l *
+ modls_zero
+ 0030367a 0 none ,l *
+ A_errno
+ 00303688 0 none ,l *
+ n_zerono
+ 0030368c 0 none ,l *
+FILE=__modlu
+ 00303690 00303747 b8
+ __modlu
+ 00303690 0 none ,g *
+ modlu_L
+ 00303728 0 none ,l *
+ modlu_zero
+ 00303730 0 none ,l *
+ A_errno
+ 00303740 0 none ,l *
+ n_zerono
+ 00303744 0 none ,l *
+FILE=memcpy
+ 00303748 00303805 be
+ _memcpy
+ 00303748 be func ,g *
+FILE=memset
+ 00303808 0030381f 18
+ _memset
+ 00303808 18 func ,g *
+FILE=sprintf
+ 00303820 0030385b 3c
+ _sprintf
+ 00303820 3c func ,g *
+FILE=_Bdel_cychdr
+ 0030385c 0030386b 10
+ _Bdel_cychdr
+ 0030385c 0 none ,g *
+FILE=_BfileFLS_CloseFile
+ 0030386c 0030387b 10
+ _BfileFLS_CloseFile
+ 0030386c 0 none ,g *
+FILE=_Bkey_Set_RepeatTime_Default
+ 0030387c 0030388b 10
+ _Bkey_Set_RepeatTime_Default
+ 0030387c 0 none ,g *
+FILE=_CallbackAtQuitMainFunction
+ 0030388c 0030389b 10
+ _CallbackAtQuitMainFunction
+ 0030388c 0 none ,g *
+FILE=_flsFindClose
+ 0030389c 003038ab 10
+ _flsFindClose
+ 0030389c 0 none ,g *
+FILE=_free
+ 003038ac 003038bb 10
+ _free
+ 003038ac 0 none ,g *
+FILE=_GLibAddinAplExecutionCheck
+ 003038bc 003038cb 10
+ _GLibAddinAplExecutionCheck
+ 003038bc 0 none ,g *
+FILE=_Hmem_SetMMU
+ 003038cc 003038db 10
+ _Hmem_SetMMU
+ 003038cc 0 none ,g *
+FILE=_malloc
+ 003038dc 003038eb 10
+ _malloc
+ 003038dc 0 none ,g *
+FILE=_PopUpWin
+ 003038ec 003038fb 10
+ _PopUpWin
+ 003038ec 0 none ,g *
+FILE=_PrintC
+ 003038fc 0030390b 10
+ _PrintC
+ 003038fc 0 none ,g *
+FILE=_fmtout
+ 0030390c 003049f7 10ec
+ __fmtout
+ 0030390c 768 func ,g *
+ __ltostr
+ 00304074 20a func ,l *
+ __xtostr
+ 0030427e 68e func ,l *
+ __round
+ 0030490c 60 func ,l *
+ __putstr
+ 0030496c 58 func ,l *
+ __putnull
+ 003049c4 10 func ,l *
+ __puterr
+ 003049d4 24 func ,l *
+FILE=r_eqd
+ 003049f8 00304a8b 94
+ __eqd
+ 003049f8 0 none ,g *
+ exception_return1
+ 00304a2a 0 none ,l *
+ exception_return2
+ 00304a2e 0 none ,l *
+ exception_return3
+ 00304a32 0 none ,l *
+ false
+ 00304a3e 0 none ,l *
+ return
+ 00304a40 0 none ,l *
+ exception1
+ 00304a54 0 none ,l *
+ exception2
+ 00304a60 0 none ,l *
+ exception3
+ 00304a6c 0 none ,l *
+ EXP_INF
+ 00304a84 0 none ,l *
+ MMASK
+ 00304a88 0 none ,l *
+FILE=_its
+ 00304a8c 00304bbb 130
+ __its
+ 00304a8c 130 func ,g *
+FILE=_xti
+ 00304bbc 00304e4b 290
+ __xti
+ 00304bbc 290 func ,g *
+ _la$264
+ 00304d94 0 none ,l *
+FILE=strlen
+ 00304e4c 00304e5b 10
+ _strlen
+ 00304e4c 10 func ,g *
+FILE=_allzero
+ 00304e5c 00304e79 1e
+ __allzero
+ 00304e5c 1e func ,g *
+FILE=_calcnpw
+ 00304e7c 00304f7b 100
+ __calcnpw
+ 00304e7c 100 func ,g *
+FILE=_log10
+ 00304f7c 00305243 2c8
+ __log10
+ 00304f7c 62 func ,g *
+ _frexp
+ 00304fde 12e func ,l *
+ _modf
+ 0030510c 138 func ,l *
+FILE=_lsfts
+ 00305244 0030528f 4c
+ __lsfts
+ 00305244 4c func ,g *
+FILE=_pow5
+ 00305290 003052b3 24
+ __pow5
+ 00305290 24 func ,g *
+FILE=_rsfts
+ 003052b4 00305309 56
+ __rsfts
+ 003052b4 56 func ,g *
+FILE=_sub
+ 0030530c 0030539f 94
+ __sub
+ 0030530c 94 func ,g *
+FILE=_umemcmp
+ 003053a0 003053d3 34
+ __umemcmp
+ 003053a0 34 func ,g *
+FILE=_unpack
+ 003053d4 0030546f 9c
+ __unpack
+ 003053d4 9c func ,g *
+FILE=memcmp
+ 00305470 003054a3 34
+ _memcmp
+ 00305470 34 func ,g *
+FILE=r_itod
+ 003054a4 003054f7 54
+ __itod
+ 003054a4 0 none ,g *
+ end_negate
+ 003054b8 0 none ,l *
+ sftl_loop
+ 003054ba 0 none ,l *
+ return
+ 003054dc 0 none ,l *
+ return_zero
+ 003054ec 0 none ,l *
+ EXP_32
+ 003054f4 0 none ,l *
+FILE=r_ltd
+ 003054f8 0030559f a8
+ __ltd
+ 003054f8 0 none ,g *
+ exception_return1
+ 0030552a 0 none ,l *
+ exception_return2
+ 0030552e 0 none ,l *
+ exception_return3
+ 00305532 0 none ,l *
+ minus
+ 00305544 0 none ,l *
+ sign_def
+ 0030554c 0 none ,l *
+ return
+ 00305550 0 none ,l *
+ exception1
+ 00305564 0 none ,l *
+ exception2
+ 00305570 0 none ,l *
+ exception3
+ 0030557c 0 none ,l *
+ false
+ 00305594 0 none ,l *
+ EXP_INF
+ 00305598 0 none ,l *
+ MMASK
+ 0030559c 0 none ,l *
+FILE=r_muld
+ 003055a0 003057b3 214
+ exception1
+ 003055a0 0 none ,l *
+ parm2_NaN_check
+ 003055bc 0 none ,l *
+ exception2
+ 003055c8 0 none ,l *
+ exception3
+ 003055e0 0 none ,l *
+ ex3
+ 003055ec 0 none ,l *
+ p1_norm_loop
+ 003055f6 0 none ,l *
+ end_p1_norm
+ 00305600 0 none ,l *
+ exception4
+ 00305604 0 none ,l *
+ ex4
+ 00305610 0 none ,l *
+ p2_norm_loop
+ 0030561a 0 none ,l *
+ end_p2_norm
+ 00305624 0 none ,l *
+ return_zero
+ 00305628 0 none ,l *
+ return_inf
+ 00305632 0 none ,l *
+ return_NaN
+ 0030563a 0 none ,l *
+ __muld
+ 00305644 0 none ,g *
+ exception_return3
+ 0030569a 0 none ,l *
+ exception_return4
+ 0030569e 0 none ,l *
+ mul_man1
+ 003056e0 0 none ,l *
+ end_normalize
+ 00305704 0 none ,l *
+ end_sticky
+ 0030570a 0 none ,l *
+ denormalize_loop
+ 00305712 0 none ,l *
+ round_denormal
+ 0030571e 0 none ,l *
+ end_round_d
+ 00305734 0 none ,l *
+ end_denormal
+ 00305738 0 none ,l *
+ round_carry
+ 0030574a 0 none ,l *
+ end_round
+ 00305750 0 none ,l *
+ return_value
+ 00305750 0 none ,l *
+ return
+ 0030576e 0 none ,l *
+ EXP_INF
+ 0030579c 0 none ,l *
+ MMASK
+ 003057a0 0 none ,l *
+ MSB
+ 003057a4 0 none ,l *
+ CARRY_CHECK
+ 003057a8 0 none ,l *
+ BIAS
+ 003057ac 0 none ,l *
+ DEN_CARRY
+ 003057b0 0 none ,l *
+FILE=r_ned
+ 003057b4 00305847 94
+ __ned
+ 003057b4 0 none ,g *
+ exception_return1
+ 003057e6 0 none ,l *
+ exception_return2
+ 003057ea 0 none ,l *
+ exception_return3
+ 003057ee 0 none ,l *
+ true
+ 003057fa 0 none ,l *
+ return
+ 003057fc 0 none ,l *
+ exception1
+ 00305810 0 none ,l *
+ exception2
+ 0030581c 0 none ,l *
+ exception3
+ 00305828 0 none ,l *
+ EXP_INF
+ 00305840 0 none ,l *
+ MMASK
+ 00305844 0 none ,l *
+FILE=__divws
+ 00305848 00305897 50
+ __divws
+ 00305848 0 none ,g *
+ divws_zero
+ 00305886 0 none ,l *
+ A_errno
+ 00305890 0 none ,l *
+ n_zerono
+ 00305894 0 none ,l *
+FILE=_div64
+ 00305898 00305a2b 194
+ __div64
+ 00305898 194 func ,g *
+FILE=_duchek
+ 00305a2c 00305a5b 30
+ __duchek
+ 00305a2c 30 func ,g *
+FILE=_lsft
+ 00305a5c 00305aa1 46
+ __lsft
+ 00305a5c 46 func ,g *
+FILE=_mult64
+ 00305aa4 00305b13 70
+ __mult64
+ 00305aa4 70 func ,g *
+FILE=_power
+ 00305b14 00305c67 154
+ __power
+ 00305b14 154 func ,g *
+FILE=_rnd
+ 00305c68 00305d53 ec
+ __rnd
+ 00305c68 ec func ,g *
+FILE=_setsbit
+ 00305d54 00305dd7 84
+ __setsbit
+ 00305d54 84 func ,g *
+FILE=_add
+ 00305dd8 00305e33 5c
+ __add
+ 00305dd8 5c func ,g *
+FILE=_mult
+ 00305e34 00305f0f dc
+ __mult
+ 00305e34 dc func ,g *
+FILE=_pow10
+ 00305f10 00305fa7 98
+ __pow10
+ 00305f10 98 func ,g *
+FILE=_rsft
+ 00305fa8 00305ff1 4a
+ __rsft
+ 00305fa8 4a func ,g *
+
+SECTION=C
+FILE=addin_sct
+ 00306070 00306083 14
+ _B_BGN
+ 00306070 0 none ,g *
+ _B_END
+ 00306074 0 none ,g *
+ _R_BGN
+ 00306078 0 none ,g *
+ _R_END
+ 0030607c 0 none ,g *
+ _D_ROM
+ 00306080 0 none ,g *
+FILE=_ctype
+ 00306084 00306183 100
+ __ctype
+ 00306084 100 data ,g *
+FILE=_its
+ 00306184 0030620b 88
+ _table$246
+ 00306184 88 data ,l *
+FILE=_pow5
+ 0030620c 003062eb e0
+ _w$238
+ 0030620c e0 data ,l *
+FILE=_power
+ 003062ec 0030638b a0
+ _conmnts$251
+ 003062ec 80 data ,l *
+ _conexp$252
+ 0030636c 20 data ,l *
+
+SECTION=B_BR_Size
+FILE=G:\Casio SDK\Projekte\Matris\Debug\Matris.obj
+ 08100000 08100003 4
+ _BR_Size
+ 08100000 4 data ,g *
+
+SECTION=B
+FILE=G:\Casio SDK\Projekte\Matris\Debug\Matris.obj
+ 08100004 08100007 4
+ _swit
+ 08100004 1 data ,g *
+ _ready
+ 08100005 1 data ,g *
+ _canswap
+ 08100006 1 data ,g *
+ _connected
+ 08100007 1 data ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\key.obj
+ 08100008 08100017 10
+ _key
+ 08100008 10 data ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\global.obj
+ 08100018 0810001e 7
+ _pScreen
+ 08100018 4 data ,g *
+ _block
+ 0810001c 1 data ,g *
+ _dir
+ 0810001d 1 data ,g *
+ _level
+ 0810001e 1 data ,g *
+FILE=_errno
+ 08100020 08100023 4
+ __errno
+ 08100020 4 data ,g *
+
+SECTION=R
+FILE=G:\Casio SDK\Projekte\Matris\Debug\Matris.obj
+ 08100024 0810003c 19
+ _seed
+ 08100024 4 data ,l *
+ _y$306
+ 08100028 4 data ,l *
+ _z$307
+ 0810002c 4 data ,l *
+ _c$308
+ 08100030 4 data ,l *
+ _pause
+ 08100034 1 data ,g *
+ _quit
+ 08100035 1 data ,g *
+ _levelchanged
+ 08100036 1 data ,g *
+ _exit
+ 08100037 1 data ,g *
+ _onoff
+ 08100038 1 data ,g *
+ _slowyposdown
+ 08100039 1 data ,g *
+ _receiveline
+ 0810003a 1 data ,g *
+ _sendline
+ 0810003b 1 data ,g *
+ _cantrans
+ 0810003c 1 data ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\key.obj
+ 08100040 08100043 4
+ _keyboardregister
+ 08100040 4 data ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\draw.obj
+ 08100044 08100fff fbc
+ _numbers
+ 08100044 258 data ,g *
+ _character
+ 0810029c 618 data ,g *
+ _blockO
+ 081008b4 c0 data ,g *
+ _blockJ
+ 08100974 90 data ,g *
+ _blockT
+ 08100a04 90 data ,g *
+ _blockL
+ 08100a94 90 data ,g *
+ _blockI
+ 08100b24 100 data ,g *
+ _blockZ
+ 08100c24 90 data ,g *
+ _blockS
+ 08100cb4 90 data ,g *
+ _spritesheed
+ 08100d44 2bc data ,g *
+FILE=G:\Casio SDK\Projekte\Matris\Debug\global.obj
+ 08101000 081011aa 1ab
+ _right
+ 08101000 1 data ,g *
+ _left
+ 08101001 1 data ,g *
+ _changemap
+ 08101002 d2 data ,g *
+ _globalmap
+ 081010d4 c8 data ,g *
+ _xpos
+ 0810119c 4 data ,g *
+ _ypos
+ 081011a0 4 data ,g *
+ _points
+ 081011a4 4 data ,g *
+ _nextdir
+ 081011a8 1 data ,g *
+ _nextblock
+ 081011a9 1 data ,g *
+ _hold
+ 081011aa 1 data ,g *
+FILE=G:\Casio SDK\OS\FX\lib\setup.obj
+ 081011ac 081011af 4
+ _gb_OnAppClose
+ 081011ac 4 data ,g *
+
+Absolute value symbols
+FILE=__divls
+ zerodiv
+ 0000044e 0 none ,l *
+FILE=__divlu
+ zerodiv
+ 0000044e 0 none ,l *
+FILE=__modls
+ zerodiv
+ 0000044e 0 none ,l *
+FILE=__modlu
+ zerodiv
+ 0000044e 0 none ,l *
+FILE=_Bdel_cychdr
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_BfileFLS_CloseFile
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_Bkey_Set_RepeatTime_Default
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_CallbackAtQuitMainFunction
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_flsFindClose
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_free
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_GLibAddinAplExecutionCheck
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_Hmem_SetMMU
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_malloc
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_PopUpWin
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=_PrintC
+ __JumpTableTOP
+ 80010070 0 none ,l *
+FILE=__divws
+ zerodiv
+ 0000044e 0 none ,l *
+
+*** Delete Symbols ***
+
+SYMBOL SIZE INFO
+
+*** Variable Accessible with Abs8 ***
+
+SYMBOL SIZE COUNTS OPTIMIZE
+
+*** Variable Accessible with Abs16 ***
+
+SYMBOL SIZE COUNTS OPTIMIZE
+
+*** Function Call ***
+
+SYMBOL COUNTS OPTIMIZE
diff --git a/Debug/FuckinRev.lst b/Debug/FuckinRev.lst new file mode 100644 index 0000000..18d22eb --- /dev/null +++ b/Debug/FuckinRev.lst @@ -0,0 +1,71 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 12-Sep-2012 17:47:33 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 1
+NUMBER OF WARNINGS: 0
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 1247
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk9D48.tmp
+
diff --git a/Debug/Matris.lst b/Debug/Matris.lst new file mode 100644 index 0000000..7883b00 --- /dev/null +++ b/Debug/Matris.lst @@ -0,0 +1,3305 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 1
+
+************ OBJECT LISTING ************
+
+FILE NAME: G:\Casio SDK\Projekte\Matris\Matris.c
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 1 /*Matris by Casimo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported
+ +License.
+ Matris.c 2 see here: http://creativecommons.org/licenses/by-nc-sa/3.0/
+ Matris.c 3 */
+ Matris.c 4 #include "stdio.h"
+ Matris.c 5 #include "key.h"
+ Matris.c 6 #include "draw.h"
+ Matris.c 7 #include "global.h"
+ Matris.c 8
+ Matris.c 9 short*APP_EnableRestart()
+P 00000000 _APP_EnableRestart: ; function: APP_EnableRestart
+ ; frame size=0
+ Matris.c 10 {
+ Matris.c 11 unsigned int ea;
+ Matris.c 12 unsigned int j;
+ Matris.c 13 short*pEnableRestartFlag;
+ Matris.c 14 ea = *(unsigned int*)0x8001007C;
+ 00000000 D541 MOV.L L685+4,R5 ; H'8001007C
+ 00000002 6452 MOV.L @R5,R4
+ Matris.c 15 ea += 0x0490*4;
+ 00000004 937E MOV.W L685,R3 ; H'1240
+ 00000006 343C ADD R3,R4
+ Matris.c 16 if ( ea < 0x8001007C ) return 0;
+ 00000008 3452 CMP/HS R5,R4
+ 0000000A 8B19 BF L673
+ Matris.c 17 if ( ea > 0x81000000 ) return 0;
+ 0000000C D73F MOV.L L685+8,R7 ; H'81000000
+ 0000000E 3476 CMP/HI R7,R4
+ 00000010 8916 BT L673
+ Matris.c 18 ea = *(unsigned int*)( ea );
+ 00000012 6442 MOV.L @R4,R4
+ Matris.c 19 if ( ea < 0x8001007C ) return 0;
+ 00000014 3452 CMP/HS R5,R4
+ 00000016 8B13 BF L673
+ Matris.c 20 if ( ea > 0x81000000 ) return 0;
+ 00000018 3476 CMP/HI R7,R4
+ 0000001A 8911 BT L673
+ Matris.c 21 j = *(unsigned char*)( ea + 1 );
+ 0000001C 8441 MOV.B @(1,R4),R0
+ Matris.c 22 j *= 4;
+ Matris.c 23 ea = ( ea + j + 4 ) & 0xFFFFFFFC;
+ 0000001E E3FC MOV #-4,R3
+ 00000020 660C EXTU.B R0,R6
+ 00000022 4608 SHLL2 R6
+ 00000024 346C ADD R6,R4
+ 00000026 7404 ADD #4,R4
+ 00000028 2439 AND R3,R4
+ Matris.c 24 if ( ea < 0x8001007C ) return 0;
+ 0000002A 3452 CMP/HS R5,R4
+ 0000002C 8B08 BF L673
+ Matris.c 25 if ( ea > 0x81000000 ) return 0;
+ 0000002E 3476 CMP/HI R7,R4
+ 00000030 8906 BT L673
+ Matris.c 26 pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 );
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 2
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000032 6442 MOV.L @R4,R4
+ Matris.c 27 if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0;
+ 00000034 D236 MOV.L L685+12,R2 ; H'FF000000
+ 00000036 7408 ADD #8,R4
+ 00000038 D336 MOV.L L685+16,R3 ; H'88000000
+ 0000003A 2249 AND R4,R2
+ 0000003C 3230 CMP/EQ R3,R2
+ 0000003E 8901 BT L509
+ 00000040 L673:
+ 00000040 000B RTS
+ 00000042 E000 MOV #0,R0
+ 00000044 L509:
+ Matris.c 28 if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
+ 00000044 2448 TST R4,R4
+ 00000046 8D02 BT/S L510
+ Matris.c 29 return pEnableRestartFlag;
+ 00000048 6043 MOV R4,R0
+ 0000004A E201 MOV #1,R2
+ 0000004C 2421 MOV.W R2,@R4
+ 0000004E L510:
+ Matris.c 30 }
+ 0000004E L503:
+ 0000004E 000B RTS
+ 00000050 0009 NOP
+ Matris.c 31
+ Matris.c 32 //restart addin after return 1
+ Matris.c 33
+ Matris.c 34 static unsigned int seed = 123456789;
+ Matris.c 35 unsigned int kiss()
+ 00000052 _kiss: ; function: kiss
+ ; frame size=4
+ 00000052 4F12 STS.L MACL,@-R15
+ Matris.c 36 {
+ Matris.c 37 // interner Zustand
+ Matris.c 38 static unsigned int y = 362436000;
+ Matris.c 39 static unsigned int z = 521288629;
+ Matris.c 40 static unsigned int c = 7654321;
+ Matris.c 41
+ Matris.c 42 unsigned long t;
+ Matris.c 43
+ Matris.c 44 // Linearer Kongruenzgenerator
+ Matris.c 45 seed = 69069 * seed + 12345;
+ 00000054 D630 MOV.L L685+20,R6 ; __$seed
+ 00000056 D331 MOV.L L685+24,R3 ; H'00010DCD
+ 00000058 6262 MOV.L @R6,R2
+ 0000005A 0237 MUL.L R3,R2
+ 0000005C 9153 MOV.W L685+2,R1 ; H'3039
+ 0000005E 031A STS MACL,R3
+ Matris.c 46
+ Matris.c 47 // Xorshift
+ Matris.c 48 y ^= y << 13;
+ 00000060 D42F MOV.L L685+28,R4 ; __$y$306
+ 00000062 331C ADD R1,R3
+ Matris.c 49 y ^= y >> 17;
+ Matris.c 50 y ^= y << 5;
+ Matris.c 51
+ Matris.c 52 // Multiply-with-carry
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 3
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 53 t = (unsigned long)698769069 * z + c;
+ 00000064 D72F MOV.L L685+32,R7 ; __$z$307
+ 00000066 2632 MOV.L R3,@R6
+ 00000068 6242 MOV.L @R4,R2
+ 0000006A E30D MOV #13,R3
+ 0000006C 6042 MOV.L @R4,R0
+ 0000006E 423D SHLD R3,R2
+ 00000070 202A XOR R2,R0
+ 00000072 6203 MOV R0,R2
+ 00000074 4229 SHLR16 R2
+ 00000076 4201 SHLR R2
+ 00000078 202A XOR R2,R0
+ 0000007A 6203 MOV R0,R2
+ 0000007C 4208 SHLL2 R2
+ 0000007E 4208 SHLL2 R2
+ 00000080 4200 SHLL R2
+ 00000082 202A XOR R2,R0
+ 00000084 2402 MOV.L R0,@R4
+ 00000086 D228 MOV.L L685+36,R2 ; H'29A65EAD
+ 00000088 6072 MOV.L @R7,R0
+ 0000008A 0027 MUL.L R2,R0
+ 0000008C D027 MOV.L L685+40,R0 ; __$c$308
+ 0000008E 051A STS MACL,R5
+ 00000090 6102 MOV.L @R0,R1
+ Matris.c 54 c = t >> 32;
+ 00000092 E2E0 MOV #-32,R2
+ 00000094 351C ADD R1,R5
+ 00000096 6353 MOV R5,R3
+ 00000098 432D SHLD R2,R3
+ 0000009A 6203 MOV R0,R2
+ 0000009C 2232 MOV.L R3,@R2
+ Matris.c 55 z = (unsigned int) t;
+ Matris.c 56
+ Matris.c 57 return seed + y + z;
+ 0000009E 6153 MOV R5,R1
+ 000000A0 2752 MOV.L R5,@R7
+ 000000A2 6342 MOV.L @R4,R3
+ 000000A4 6062 MOV.L @R6,R0
+ 000000A6 303C ADD R3,R0
+ 000000A8 301C ADD R1,R0
+ Matris.c 58 }
+ 000000AA 000B RTS
+ 000000AC 4F16 LDS.L @R15+,MACL
+ Matris.c 59
+ Matris.c 60 void seedkiss()
+ 000000AE _seedkiss: ; function: seedkiss
+ ; frame size=4
+ 000000AE 4F22 STS.L PR,@-R15
+ Matris.c 61 {
+ Matris.c 62 seed = RTC_GetTicks();
+ 000000B0 D31F MOV.L L685+44,R3 ; _RTC_GetTicks
+ 000000B2 430B JSR @R3
+ 000000B4 0009 NOP
+ 000000B6 D218 MOV.L L685+20,R2 ; __$seed
+ Matris.c 63 }
+ 000000B8 4F26 LDS.L @R15+,PR
+ 000000BA 000B RTS
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 4
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000000BC 2202 MOV.L R0,@R2
+ Matris.c 64
+ Matris.c 65 //kiss is a random number generator
+ Matris.c 66
+ Matris.c 67 char *Disp_GetVRAMPtr(void);
+ Matris.c 68 void DrawLineVRAM(int x1, int y1, int x2, int y2);
+ Matris.c 69 void AllClr_DD(void);
+ Matris.c 70 void AllClr_VRAM(void);
+ Matris.c 71 void AllClr_DDVRAM(void);
+ Matris.c 72 void locate(int x, int y);
+ Matris.c 73 void Print(const unsigned char *str);
+ Matris.c 74 int Timer_Install(int TimerID, void (*handler)(void), int delay);
+ Matris.c 75 int Timer_Uninstall(int TimerID);
+ Matris.c 76 int Timer_Start(int TimerID);
+ Matris.c 77 void App_RUN_MAT();
+ Matris.c 78
+ Matris.c 79 //some prototypes
+ Matris.c 80
+ Matris.c 81 char swit;
+ Matris.c 82
+ Matris.c 83 char pause = False;
+ Matris.c 84 //pause the game
+ Matris.c 85
+ Matris.c 86 char quit = False;
+ Matris.c 87
+ Matris.c 88 char levelchanged = False;
+ Matris.c 89 //has the level changed during two actions?
+ Matris.c 90
+ Matris.c 91 char exit = False;
+ Matris.c 92
+ Matris.c 93 char ready;
+ Matris.c 94
+ Matris.c 95 char onoff = True;
+ Matris.c 96 //used for timers
+ Matris.c 97
+ Matris.c 98 char canswap;
+ Matris.c 99 //brick already swapped?
+ Matris.c 100
+ Matris.c 101 char slowyposdown = 0;
+ Matris.c 102
+ Matris.c 103 char connected;
+ Matris.c 104 //multiplayer activated?
+ Matris.c 105
+ Matris.c 106 unsigned char receiveline = 0;
+ Matris.c 107 unsigned char sendline = 0;
+ Matris.c 108 //what to send or receive?
+ Matris.c 109
+ Matris.c 110 char cantrans = False;
+ Matris.c 111 //allowed to transfer?
+ Matris.c 112
+ Matris.c 113 //taken from MonochromeLib by PierrotLL
+ Matris.c 114
+ Matris.c 115 void drawbuffer(char *buffer)
+ 000000BE _drawbuffer: ; function: drawbuffer
+ ; frame size=16
+ 000000BE E107 MOV #7,R1
+ 000000C0 D61C MOV.L L685+48,R6 ; H'B4000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 5
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000000C2 E004 MOV #4,R0
+ 000000C4 D51C MOV.L L685+52,R5 ; H'B4010000
+ 000000C6 2FD6 MOV.L R13,@-R15
+ 000000C8 2FC6 MOV.L R12,@-R15
+ Matris.c 116 {
+ Matris.c 117 char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
+ Matris.c 118 int i, j;
+ Matris.c 119 for(i=0 ; i<64 ; i++)
+ 000000CA EC00 MOV #0,R12
+ 000000CC 2FA6 MOV.L R10,@-R15
+ 000000CE 6DC3 MOV R12,R13
+ 000000D0 2F96 MOV.L R9,@-R15
+ 000000D2 EA10 MOV #16,R10
+ 000000D4 E940 MOV #64,R9
+ 000000D6 L512:
+ Matris.c 120 {
+ Matris.c 121 *LCD_register_selector = 4;
+ Matris.c 122 *LCD_data_register = i|192;
+ 000000D6 E3C0 MOV #-64,R3
+ 000000D8 2600 MOV.B R0,@R6
+ Matris.c 123 *LCD_register_selector = 4;
+ Matris.c 124 *LCD_data_register = 0;
+ Matris.c 125 *LCD_register_selector = 7;
+ Matris.c 126 for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++;
+ 000000DA 67A3 MOV R10,R7
+ 000000DC 23DB OR R13,R3
+ 000000DE 2530 MOV.B R3,@R5
+ 000000E0 2600 MOV.B R0,@R6
+ 000000E2 25C0 MOV.B R12,@R5
+ 000000E4 2610 MOV.B R1,@R6
+ 000000E6 L514:
+ 000000E6 77FE ADD #-2,R7
+ 000000E8 6344 MOV.B @R4+,R3
+ 000000EA 2778 TST R7,R7
+ 000000EC 2530 MOV.B R3,@R5
+ 000000EE 6344 MOV.B @R4+,R3
+ 000000F0 8FF9 BF/S L514
+ 000000F2 2530 MOV.B R3,@R5
+ 000000F4 7D01 ADD #1,R13
+ 000000F6 3D93 CMP/GE R9,R13
+ 000000F8 8BED BF L512
+ Matris.c 127 }
+ Matris.c 128 }
+ 000000FA 69F6 MOV.L @R15+,R9
+ 000000FC 6AF6 MOV.L @R15+,R10
+ 000000FE 6CF6 MOV.L @R15+,R12
+ 00000100 000B RTS
+ 00000102 6DF6 MOV.L @R15+,R13
+ 00000104 L685:
+ 00000104 1240 .DATA.W H'1240
+ 00000106 3039 .DATA.W H'3039
+ 00000108 8001007C .DATA.L H'8001007C
+ 0000010C 81000000 .DATA.L H'81000000
+ 00000110 FF000000 .DATA.L H'FF000000
+ 00000114 88000000 .DATA.L H'88000000
+ 00000118 <00000000> .DATA.L __$seed
+ 0000011C 00010DCD .DATA.L H'00010DCD
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 6
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000120 <00000000> .DATA.L __$y$306
+ 00000124 <00000000> .DATA.L __$z$307
+ 00000128 29A65EAD .DATA.L H'29A65EAD
+ 0000012C <00000000> .DATA.L __$c$308
+ 00000130 <00000000> .DATA.L _RTC_GetTicks
+ 00000134 B4000000 .DATA.L H'B4000000
+ 00000138 B4010000 .DATA.L H'B4010000
+ Matris.c 129
+ Matris.c 130 void RestGray(void)
+ 0000013C _RestGray: ; function: RestGray
+ ; frame size=8
+ 0000013C 2FE6 MOV.L R14,@-R15
+ 0000013E 4F22 STS.L PR,@-R15
+ Matris.c 131 {
+ Matris.c 132 drawbuffer(pScreen);
+ 00000140 DE30 MOV.L L686+8,R14 ; _pScreen
+ 00000142 BFBC BSR _drawbuffer
+ 00000144 64E2 MOV.L @R14,R4
+ Matris.c 133 drawbuffer(pScreen + 1024);
+ 00000146 9359 MOV.W L686,R3 ; H'0400
+ 00000148 64E2 MOV.L @R14,R4
+ 0000014A BFB8 BSR _drawbuffer
+ 0000014C 343C ADD R3,R4
+ Matris.c 134 drawbuffer(pScreen + 2048);
+ 0000014E 9356 MOV.W L686+2,R3 ; H'0800
+ 00000150 64E2 MOV.L @R14,R4
+ 00000152 343C ADD R3,R4
+ 00000154 4F26 LDS.L @R15+,PR
+ 00000156 AFB2 BRA _drawbuffer
+ 00000158 6EF6 MOV.L @R15+,R14
+ Matris.c 135 }
+ Matris.c 136
+ Matris.c 137
+ Matris.c 138 void Disconnect()
+ 0000015A _Disconnect: ; function: Disconnect
+ ; frame size=4
+ 0000015A 4F22 STS.L PR,@-R15
+ Matris.c 139 {
+ Matris.c 140 Serial_Close(1);
+ 0000015C D32A MOV.L L686+12,R3 ; _Serial_Close
+ 0000015E 430B JSR @R3
+ 00000160 E401 MOV #1,R4
+ Matris.c 141 connected = False;
+ 00000162 E200 MOV #0,R2
+ 00000164 D329 MOV.L L686+16,R3 ; _connected
+ Matris.c 142 }
+ 00000166 4F26 LDS.L @R15+,PR
+ 00000168 000B RTS
+ 0000016A 2320 MOV.B R2,@R3
+ Matris.c 143
+ Matris.c 144 void TeacherMode()
+ 0000016C _TeacherMode: ; function: TeacherMode
+ ; frame size=4
+ 0000016C 4F22 STS.L PR,@-R15
+ Matris.c 145 {
+ Matris.c 146 Timer_Uninstall(6);
+ 0000016E D328 MOV.L L686+20,R3 ; _Timer_Uninstall
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 7
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000170 430B JSR @R3
+ 00000172 E406 MOV #6,R4
+ Matris.c 147 Timer_Uninstall(7);
+ 00000174 D226 MOV.L L686+20,R2 ; _Timer_Uninstall
+ 00000176 420B JSR @R2
+ 00000178 E407 MOV #7,R4
+ Matris.c 148 Disconnect();
+ 0000017A BFEE BSR _Disconnect
+ 0000017C 0009 NOP
+ Matris.c 149
+ Matris.c 150 App_RUN_MAT();
+ 0000017E D225 MOV.L L686+24,R2 ; _App_RUN_MAT
+ 00000180 422B JMP @R2
+ 00000182 4F26 LDS.L @R15+,PR
+ Matris.c 151 }
+ Matris.c 152
+ Matris.c 153 int round(float num)
+ 00000184 _round: ; function: round
+ ; frame size=32
+ ; used runtime library name:
+ ; __addd, __stod, __dtoi
+ 00000184 4F22 STS.L PR,@-R15
+ Matris.c 154 {
+ Matris.c 155 return (int) (num + 0.5);
+ 00000186 6043 MOV R4,R0
+ 00000188 D323 MOV.L L686+28,R3 ; __stod
+ 0000018A 7FF0 ADD #-16,R15
+ 0000018C 430B JSR @R3
+ 0000018E 2FF6 MOV.L R15,@-R15
+ 00000190 D123 MOV.L L686+36,R1 ; __addd
+ 00000192 E200 MOV #0,R2
+ 00000194 2F26 MOV.L R2,@-R15
+ 00000196 D221 MOV.L L686+32,R2 ; H'3FE00000
+ 00000198 2F26 MOV.L R2,@-R15
+ 0000019A 63F3 MOV R15,R3
+ 0000019C 7310 ADD #16,R3
+ 0000019E 410B JSR @R1
+ 000001A0 2F36 MOV.L R3,@-R15
+ 000001A2 D220 MOV.L L686+40,R2 ; __dtoi
+ 000001A4 420B JSR @R2
+ 000001A6 0009 NOP
+ Matris.c 156 }
+ 000001A8 4F26 LDS.L @R15+,PR
+ 000001AA 000B RTS
+ 000001AC 0009 NOP
+ Matris.c 157
+ Matris.c 158 void clrbuffer(char *buffer)
+ 000001AE _clrbuffer: ; function: clrbuffer
+ ; frame size=0
+ Matris.c 159 {
+ Matris.c 160 memset(buffer, 0, 3072);
+ 000001AE 9627 MOV.W L686+4,R6 ; H'0C00
+ 000001B0 D31D MOV.L L686+44,R3 ; _memset
+ 000001B2 432B JMP @R3
+ 000001B4 E500 MOV #0,R5
+ Matris.c 161 }
+ Matris.c 162
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 8
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 163
+ Matris.c 164 void CreateBlock()
+ 000001B6 _CreateBlock: ; function: CreateBlock
+ ; frame size=8
+ ; used runtime library name:
+ ; __modlu
+ 000001B6 2FE6 MOV.L R14,@-R15
+ 000001B8 4F22 STS.L PR,@-R15
+ Matris.c 165 {
+ Matris.c 166 block = nextblock;
+ Matris.c 167 canswap = True;
+ 000001BA EE01 MOV #1,R14
+ 000001BC D21B MOV.L L686+48,R2 ; _nextblock
+ 000001BE 6320 MOV.B @R2,R3
+ 000001C0 D11B MOV.L L686+52,R1 ; _block
+ 000001C2 2130 MOV.B R3,@R1
+ 000001C4 D31B MOV.L L686+56,R3 ; _canswap
+ Matris.c 168 nextblock = (kiss() % 7) + 1;
+ 000001C6 BF44 BSR _kiss
+ 000001C8 23E0 MOV.B R14,@R3
+ 000001CA 6103 MOV R0,R1
+ 000001CC D31A MOV.L L686+60,R3 ; __modlu
+ 000001CE 430B JSR @R3
+ 000001D0 E007 MOV #7,R0
+ 000001D2 7001 ADD #1,R0
+ 000001D4 D215 MOV.L L686+48,R2 ; _nextblock
+ Matris.c 169 xpos = 7;
+ 000001D6 E307 MOV #7,R3
+ 000001D8 D118 MOV.L L686+64,R1 ; _xpos
+ 000001DA 2200 MOV.B R0,@R2
+ 000001DC 2132 MOV.L R3,@R1
+ Matris.c 170 ypos = 3;
+ 000001DE E203 MOV #3,R2
+ 000001E0 D317 MOV.L L686+68,R3 ; _ypos
+ Matris.c 171 dir = 0;
+ 000001E2 E000 MOV #0,R0
+ Matris.c 172 left = True;
+ 000001E4 D118 MOV.L L686+76,R1 ; _left
+ 000001E6 2322 MOV.L R2,@R3
+ 000001E8 D216 MOV.L L686+72,R2 ; _dir
+ 000001EA 2200 MOV.B R0,@R2
+ 000001EC 21E0 MOV.B R14,@R1
+ Matris.c 173 right = True;
+ 000001EE D317 MOV.L L686+80,R3 ; _right
+ Matris.c 174 cantrans = True;
+ 000001F0 D217 MOV.L L686+84,R2 ; _cantrans
+ 000001F2 23E0 MOV.B R14,@R3
+ 000001F4 22E0 MOV.B R14,@R2
+ Matris.c 175 }
+ 000001F6 4F26 LDS.L @R15+,PR
+ 000001F8 000B RTS
+ 000001FA 6EF6 MOV.L @R15+,R14
+ 000001FC L686:
+ 000001FC 0400 .DATA.W H'0400
+ 000001FE 0800 .DATA.W H'0800
+ 00000200 0C00 .DATA.W H'0C00
+ 00000202 0000 .DATA.W 0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 9
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000204 <00000000> .DATA.L _pScreen
+ 00000208 <00000000> .DATA.L _Serial_Close
+ 0000020C <00000000> .DATA.L _connected
+ 00000210 <00000000> .DATA.L _Timer_Uninstall
+ 00000214 <00000000> .DATA.L _App_RUN_MAT
+ 00000218 <00000000> .DATA.L __stod
+ 0000021C 3FE00000 .DATA.L H'3FE00000
+ 00000220 <00000000> .DATA.L __addd
+ 00000224 <00000000> .DATA.L __dtoi
+ 00000228 <00000000> .DATA.L _memset
+ 0000022C <00000000> .DATA.L _nextblock
+ 00000230 <00000000> .DATA.L _block
+ 00000234 <00000000> .DATA.L _canswap
+ 00000238 <00000000> .DATA.L __modlu
+ 0000023C <00000000> .DATA.L _xpos
+ 00000240 <00000000> .DATA.L _ypos
+ 00000244 <00000000> .DATA.L _dir
+ 00000248 <00000000> .DATA.L _left
+ 0000024C <00000000> .DATA.L _right
+ 00000250 <00000000> .DATA.L _cantrans
+ Matris.c 176
+ Matris.c 177 void ResetValues()
+ 00000254 _ResetValues: ; function: ResetValues
+ ; frame size=60
+ ; used runtime library name:
+ ; __modlu
+ 00000254 2FE6 MOV.L R14,@-R15
+ 00000256 2FD6 MOV.L R13,@-R15
+ 00000258 4F22 STS.L PR,@-R15
+ 0000025A 7FE0 ADD #-32,R15
+ Matris.c 178 {
+ Matris.c 179 int x,y;
+ Matris.c 180
+ Matris.c 181 char text[30];
+ Matris.c 182
+ Matris.c 183 memset(&changemap, 0, 210);
+ 0000025C 966E MOV.W L687,R6 ; H'00D2
+ 0000025E D438 MOV.L L687+4,R4 ; _changemap
+ 00000260 D338 MOV.L L687+8,R3 ; _memset
+ 00000262 430B JSR @R3
+ 00000264 E500 MOV #0,R5
+ Matris.c 184 memset(&globalmap, 0, 210);
+ 00000266 9669 MOV.W L687,R6 ; H'00D2
+ 00000268 D437 MOV.L L687+12,R4 ; _globalmap
+ 0000026A D236 MOV.L L687+8,R2 ; _memset
+ 0000026C 420B JSR @R2
+ 0000026E E500 MOV #0,R5
+ Matris.c 185
+ Matris.c 186 ypos = 3;
+ 00000270 D236 MOV.L L687+16,R2 ; _ypos
+ Matris.c 187 xpos = 0;
+ 00000272 E100 MOV #0,R1
+ 00000274 D036 MOV.L L687+20,R0 ; _xpos
+ Matris.c 188 block = 0;
+ Matris.c 189 onoff = True;
+ 00000276 ED01 MOV #1,R13
+ 00000278 E303 MOV #3,R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 10
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000027A 6E13 MOV R1,R14
+ 0000027C 2232 MOV.L R3,@R2
+ 0000027E 2012 MOV.L R1,@R0
+ 00000280 D334 MOV.L L687+24,R3 ; _block
+ 00000282 23E0 MOV.B R14,@R3
+ 00000284 D234 MOV.L L687+28,R2 ; _onoff
+ 00000286 22D0 MOV.B R13,@R2
+ Matris.c 190 levelchanged = False;
+ 00000288 D134 MOV.L L687+32,R1 ; _levelchanged
+ 0000028A 21E0 MOV.B R14,@R1
+ Matris.c 191 right = True;
+ 0000028C D334 MOV.L L687+36,R3 ; _right
+ 0000028E 23D0 MOV.B R13,@R3
+ Matris.c 192 left = True;
+ 00000290 D234 MOV.L L687+40,R2 ; _left
+ 00000292 22D0 MOV.B R13,@R2
+ Matris.c 193 hold = 0;
+ 00000294 D134 MOV.L L687+44,R1 ; _hold
+ 00000296 21E0 MOV.B R14,@R1
+ Matris.c 194 exit = False;
+ 00000298 D334 MOV.L L687+48,R3 ; _exit
+ 0000029A 23E0 MOV.B R14,@R3
+ Matris.c 195 nextdir = Down;
+ 0000029C D234 MOV.L L687+52,R2 ; _nextdir
+ Matris.c 196 nextblock = (kiss() % 7) + 1;
+ 0000029E BED8 BSR _kiss
+ 000002A0 22E0 MOV.B R14,@R2
+ 000002A2 6103 MOV R0,R1
+ 000002A4 D333 MOV.L L687+56,R3 ; __modlu
+ 000002A6 430B JSR @R3
+ 000002A8 E007 MOV #7,R0
+ 000002AA 7001 ADD #1,R0
+ 000002AC D232 MOV.L L687+60,R2 ; _nextblock
+ Matris.c 197 CreateBlock();
+ 000002AE BF82 BSR _CreateBlock
+ 000002B0 2200 MOV.B R0,@R2
+ Matris.c 198 clrbuffer(pScreen);
+ 000002B2 D132 MOV.L L687+64,R1 ; _pScreen
+ 000002B4 BF7B BSR _clrbuffer
+ 000002B6 6412 MOV.L @R1,R4
+ Matris.c 199 Timer_Uninstall(6);
+ 000002B8 D231 MOV.L L687+68,R2 ; _Timer_Uninstall
+ 000002BA 420B JSR @R2
+ 000002BC E406 MOV #6,R4
+ Matris.c 200 Timer_Uninstall(7);
+ 000002BE D330 MOV.L L687+68,R3 ; _Timer_Uninstall
+ 000002C0 430B JSR @R3
+ 000002C2 E407 MOV #7,R4
+ Matris.c 201 ready = True;
+ 000002C4 D22F MOV.L L687+72,R2 ; _ready
+ 000002C6 22D0 MOV.B R13,@R2
+ Matris.c 202 connected = False;
+ 000002C8 D32F MOV.L L687+76,R3 ; _connected
+ Matris.c 203
+ Matris.c 204 AllClr_DDVRAM();
+ 000002CA D130 MOV.L L687+80,R1 ; _AllClr_DDVRAM
+ 000002CC 410B JSR @R1
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 11
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000002CE 23E0 MOV.B R14,@R3
+ Matris.c 205
+ Matris.c 206 PopUpWin(2);
+ 000002D0 D32F MOV.L L687+84,R3 ; _PopUpWin
+ 000002D2 430B JSR @R3
+ 000002D4 E402 MOV #2,R4
+ Matris.c 207 sprintf(&text, "Points: %d", points);
+ 000002D6 D32F MOV.L L687+88,R3 ; _points
+ 000002D8 D12F MOV.L L687+92,R1 ; L367
+ 000002DA 6232 MOV.L @R3,R2
+ 000002DC 2F26 MOV.L R2,@-R15
+ 000002DE 2F16 MOV.L R1,@-R15
+ 000002E0 D22E MOV.L L687+96,R2 ; _sprintf
+ 000002E2 64F3 MOV R15,R4
+ 000002E4 420B JSR @R2
+ 000002E6 7408 ADD #8,R4
+ Matris.c 208 locate(3, 3);
+ 000002E8 D32D MOV.L L687+100,R3; _locate
+ 000002EA E503 MOV #3,R5
+ 000002EC 430B JSR @R3
+ 000002EE 6453 MOV R5,R4
+ Matris.c 209 Print(&text);
+ 000002F0 D22C MOV.L L687+104,R2; _Print
+ 000002F2 64F3 MOV R15,R4
+ 000002F4 420B JSR @R2
+ 000002F6 7408 ADD #8,R4
+ Matris.c 210 sprintf(&text, "Level: %d", level);
+ 000002F8 D22B MOV.L L687+108,R2; _level
+ 000002FA 6320 MOV.B @R2,R3
+ 000002FC D12B MOV.L L687+112,R1; L368
+ 000002FE 2F36 MOV.L R3,@-R15
+ 00000300 2F16 MOV.L R1,@-R15
+ 00000302 64F3 MOV R15,R4
+ 00000304 D325 MOV.L L687+96,R3 ; _sprintf
+ 00000306 430B JSR @R3
+ 00000308 7410 ADD #16,R4
+ 0000030A 7F10 ADD #16,R15
+ Matris.c 211 locate(3, 4);
+ 0000030C D224 MOV.L L687+100,R2; _locate
+ 0000030E E504 MOV #4,R5
+ 00000310 420B JSR @R2
+ 00000312 E403 MOV #3,R4
+ Matris.c 212 Print(&text);
+ 00000314 D323 MOV.L L687+104,R3; _Print
+ 00000316 430B JSR @R3
+ 00000318 64F3 MOV R15,R4
+ Matris.c 213 PutDisp_DD();
+ 0000031A D225 MOV.L L687+116,R2; _PutDisp_DD
+ 0000031C 420B JSR @R2
+ 0000031E 0009 NOP
+ Matris.c 214
+ Matris.c 215 points = 0;
+ 00000320 D31C MOV.L L687+88,R3 ; _points
+ 00000322 23E2 MOV.L R14,@R3
+ Matris.c 216 level = 0;
+ 00000324 D220 MOV.L L687+108,R2; _level
+ 00000326 22E0 MOV.B R14,@R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 12
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000328 DE22 MOV.L L687+120,R14; _KeyDown
+ Matris.c 217
+ Matris.c 218 while(!KeyDown(31));
+ 0000032A L516:
+ 0000032A 4E0B JSR @R14
+ 0000032C E41F MOV #31,R4
+ 0000032E 2008 TST R0,R0
+ 00000330 89FB BT L516
+ Matris.c 219 }
+ 00000332 7F20 ADD #32,R15
+ 00000334 4F26 LDS.L @R15+,PR
+ 00000336 6DF6 MOV.L @R15+,R13
+ 00000338 000B RTS
+ 0000033A 6EF6 MOV.L @R15+,R14
+ 0000033C L687:
+ 0000033C 00D2 .DATA.W H'00D2
+ 0000033E 0000 .DATA.W 0
+ 00000340 <00000000> .DATA.L _changemap
+ 00000344 <00000000> .DATA.L _memset
+ 00000348 <00000000> .DATA.L _globalmap
+ 0000034C <00000000> .DATA.L _ypos
+ 00000350 <00000000> .DATA.L _xpos
+ 00000354 <00000000> .DATA.L _block
+ 00000358 <00000000> .DATA.L _onoff
+ 0000035C <00000000> .DATA.L _levelchanged
+ 00000360 <00000000> .DATA.L _right
+ 00000364 <00000000> .DATA.L _left
+ 00000368 <00000000> .DATA.L _hold
+ 0000036C <00000000> .DATA.L _exit
+ 00000370 <00000000> .DATA.L _nextdir
+ 00000374 <00000000> .DATA.L __modlu
+ 00000378 <00000000> .DATA.L _nextblock
+ 0000037C <00000000> .DATA.L _pScreen
+ 00000380 <00000000> .DATA.L _Timer_Uninstall
+ 00000384 <00000000> .DATA.L _ready
+ 00000388 <00000000> .DATA.L _connected
+ 0000038C <00000000> .DATA.L _AllClr_DDVRAM
+ 00000390 <00000000> .DATA.L _PopUpWin
+ 00000394 <00000000> .DATA.L _points
+ 00000398 <00000000> .DATA.L L367
+ 0000039C <00000000> .DATA.L _sprintf
+ 000003A0 <00000000> .DATA.L _locate
+ 000003A4 <00000000> .DATA.L _Print
+ 000003A8 <00000000> .DATA.L _level
+ 000003AC <00000000> .DATA.L L368
+ 000003B0 <00000000> .DATA.L _PutDisp_DD
+ 000003B4 <00000000> .DATA.L _KeyDown
+ Matris.c 220
+ Matris.c 221 void Transfer()
+ 000003B8 _Transfer: ; function: Transfer
+ ; frame size=44
+ ; used runtime library name:
+ ; __modlu
+ 000003B8 2FE6 MOV.L R14,@-R15
+ 000003BA 2FD6 MOV.L R13,@-R15
+ 000003BC 2FC6 MOV.L R12,@-R15
+ 000003BE 2FB6 MOV.L R11,@-R15
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 13
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000003C0 2FA6 MOV.L R10,@-R15
+ 000003C2 2F96 MOV.L R9,@-R15
+ 000003C4 2F86 MOV.L R8,@-R15
+ 000003C6 4F22 STS.L PR,@-R15
+ 000003C8 7FF8 ADD #-8,R15
+ Matris.c 222 {
+ Matris.c 223 int xcount, ycount;
+ Matris.c 224 char space = kiss() % 10; //where is the hole?
+ 000003CA BE42 BSR _kiss
+ 000003CC EA0A MOV #10,R10
+ 000003CE 6103 MOV R0,R1
+ 000003D0 D283 MOV.L L688+2,R2 ; __modlu
+ 000003D2 420B JSR @R2
+ 000003D4 60A3 MOV R10,R0
+ 000003D6 2F00 MOV.B R0,@R15
+ Matris.c 225
+ Matris.c 226 if(connected == True)
+ 000003D8 D382 MOV.L L688+6,R3 ; _connected
+ 000003DA 6030 MOV.B @R3,R0
+ 000003DC 8801 CMP/EQ #1,R0
+ 000003DE 8901 BT L689
+ 000003E0 A093 BRA L518
+ 000003E2 0009 NOP
+ 000003E4 L689:
+ Matris.c 227 {
+ Matris.c 228 if(receiveline > sendline)
+ 000003E4 DD80 MOV.L L688+10,R13; _sendline
+ 000003E6 DE81 MOV.L L688+14,R14; _receiveline
+ 000003E8 62D0 MOV.B @R13,R2
+ 000003EA 61E0 MOV.B @R14,R1
+ 000003EC 3126 CMP/HI R2,R1
+ 000003EE 8F06 BF/S L519
+ 000003F0 EB00 MOV #0,R11
+ Matris.c 229 {
+ Matris.c 230 //if there are lines arriving, but there can be send lines back, erase the lines,
+ +for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received
+ Matris.c 231 receiveline -= sendline;
+ 000003F2 62D0 MOV.B @R13,R2
+ 000003F4 61E0 MOV.B @R14,R1
+ 000003F6 3128 SUB R2,R1
+ 000003F8 2E10 MOV.B R1,@R14
+ Matris.c 232 sendline = 0;
+ 000003FA A005 BRA L520
+ 000003FC 2DB0 MOV.B R11,@R13
+ 000003FE L519:
+ Matris.c 233 }
+ Matris.c 234 else
+ Matris.c 235 {
+ Matris.c 236 sendline -= receiveline;
+ 000003FE 62E0 MOV.B @R14,R2
+ 00000400 61D0 MOV.B @R13,R1
+ 00000402 3128 SUB R2,R1
+ 00000404 2D10 MOV.B R1,@R13
+ Matris.c 237 receiveline = 0;
+ 00000406 2EB0 MOV.B R11,@R14
+ 00000408 L520:
+ Matris.c 238 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 14
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 239 if(sendline > 0)
+ 00000408 63D0 MOV.B @R13,R3
+ 0000040A 633C EXTU.B R3,R3
+ 0000040C 4315 CMP/PL R3
+ 0000040E 8B06 BF L521
+ 00000410 DC77 MOV.L L688+18,R12; _Serial_BufferedTransmitOneByte
+ Matris.c 240 {
+ Matris.c 241 while(Serial_BufferedTransmitOneByte(sendline) != 0);
+ 00000412 L522:
+ 00000412 64D0 MOV.B @R13,R4
+ 00000414 4C0B JSR @R12
+ 00000416 644C EXTU.B R4,R4
+ 00000418 2008 TST R0,R0
+ 0000041A 8BFA BF L522
+ Matris.c 242 //send the number of lines
+ Matris.c 243 sendline = 0;
+ 0000041C 2DB0 MOV.B R11,@R13
+ 0000041E L521:
+ 0000041E 60E0 MOV.B @R14,R0
+ 00000420 600C EXTU.B R0,R0
+ 00000422 4015 CMP/PL R0
+ 00000424 8B71 BF L518
+ Matris.c 244 }
+ Matris.c 245 if(receiveline > 0)
+ Matris.c 246 {
+ Matris.c 247 for(ycount = 0; ycount < 20 - receiveline; ycount++)
+ 00000426 E714 MOV #20,R7
+ 00000428 DC72 MOV.L L688+22,R12; _globalmap
+ 0000042A 6273 MOV R7,R2
+ 0000042C 3208 SUB R0,R2
+ 0000042E 4215 CMP/PL R2
+ 00000430 8F2A BF/S L525
+ 00000432 65B3 MOV R11,R5
+ 00000434 L526:
+ Matris.c 248 {
+ Matris.c 249 for(xcount = 0; xcount < 10; xcount++)
+ 00000434 60B3 MOV R11,R0
+ 00000436 6653 MOV R5,R6
+ 00000438 6353 MOV R5,R3
+ 0000043A 4608 SHLL2 R6
+ 0000043C 363C ADD R3,R6
+ 0000043E 4600 SHLL R6
+ 00000440 36CC ADD R12,R6
+ 00000442 L528:
+ Matris.c 250 {
+ Matris.c 251 globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount
+ +];
+ 00000442 6103 MOV R0,R1
+ 00000444 63E0 MOV.B @R14,R3
+ 00000446 316C ADD R6,R1
+ 00000448 633C EXTU.B R3,R3
+ 0000044A 335C ADD R5,R3
+ 0000044C 6233 MOV R3,R2
+ 0000044E 4308 SHLL2 R3
+ 00000450 332C ADD R2,R3
+ 00000452 4300 SHLL R3
+ 00000454 33CC ADD R12,R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 15
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000456 033C MOV.B @(R0,R3),R3
+ 00000458 2130 MOV.B R3,@R1
+ 0000045A 7001 ADD #1,R0
+ 0000045C 63E0 MOV.B @R14,R3
+ 0000045E 6103 MOV R0,R1
+ 00000460 316C ADD R6,R1
+ 00000462 633C EXTU.B R3,R3
+ 00000464 335C ADD R5,R3
+ 00000466 6233 MOV R3,R2
+ 00000468 4308 SHLL2 R3
+ 0000046A 332C ADD R2,R3
+ 0000046C 4300 SHLL R3
+ 0000046E 33CC ADD R12,R3
+ 00000470 033C MOV.B @(R0,R3),R3
+ 00000472 7001 ADD #1,R0
+ 00000474 2130 MOV.B R3,@R1
+ 00000476 30A3 CMP/GE R10,R0
+ 00000478 8BE3 BF L528
+ 0000047A 7501 ADD #1,R5
+ 0000047C 62E0 MOV.B @R14,R2
+ 0000047E 6373 MOV R7,R3
+ 00000480 622C EXTU.B R2,R2
+ 00000482 3328 SUB R2,R3
+ 00000484 3533 CMP/GE R3,R5
+ 00000486 8BD5 BF L526
+ 00000488 L525:
+ Matris.c 252 //move all lines upwards
+ Matris.c 253 }
+ Matris.c 254 }
+ Matris.c 255
+ Matris.c 256 for(ycount = 19; ycount > 19 - receiveline; ycount --)
+ 00000488 63E0 MOV.B @R14,R3
+ 0000048A E813 MOV #19,R8
+ 0000048C 633C EXTU.B R3,R3
+ 0000048E 6283 MOV R8,R2
+ 00000490 3238 SUB R3,R2
+ 00000492 3827 CMP/GT R2,R8
+ 00000494 8B38 BF L529
+ 00000496 L530:
+ Matris.c 257 {
+ Matris.c 258 for(xcount = 0; xcount < 10; xcount ++)
+ 00000496 6DB3 MOV R11,R13
+ 00000498 6983 MOV R8,R9
+ 0000049A 6383 MOV R8,R3
+ 0000049C 4908 SHLL2 R9
+ 0000049E 393C ADD R3,R9
+ 000004A0 4900 SHLL R9
+ 000004A2 39CC ADD R12,R9
+ 000004A4 L532:
+ Matris.c 259 {
+ Matris.c 260 globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) +
+ + 1;
+ 000004A4 63D3 MOV R13,R3
+ 000004A6 339C ADD R9,R3
+ 000004A8 2F36 MOV.L R3,@-R15
+ 000004AA 62F3 MOV R15,R2
+ 000004AC 7204 ADD #4,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 16
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000004AE 6220 MOV.B @R2,R2
+ 000004B0 1F22 MOV.L R2,@(8,R15)
+ 000004B2 3D20 CMP/EQ R2,R13
+ 000004B4 8B01 BF L533
+ 000004B6 A008 BRA L534
+ 000004B8 E200 MOV #0,R2
+ 000004BA L533:
+ 000004BA BDCA BSR _kiss
+ 000004BC 0009 NOP
+ 000004BE 6103 MOV R0,R1
+ 000004C0 D347 MOV.L L688+2,R3 ; __modlu
+ 000004C2 430B JSR @R3
+ 000004C4 E007 MOV #7,R0
+ 000004C6 7001 ADD #1,R0
+ 000004C8 6203 MOV R0,R2
+ 000004CA L534:
+ 000004CA 7D01 ADD #1,R13
+ 000004CC 63F6 MOV.L @R15+,R3
+ 000004CE 2320 MOV.B R2,@R3
+ 000004D0 63D3 MOV R13,R3
+ 000004D2 339C ADD R9,R3
+ 000004D4 2F36 MOV.L R3,@-R15
+ 000004D6 52F2 MOV.L @(8,R15),R2
+ 000004D8 3D20 CMP/EQ R2,R13
+ 000004DA 8B01 BF L535
+ 000004DC A008 BRA L536
+ 000004DE E200 MOV #0,R2
+ 000004E0 L535:
+ 000004E0 BDB7 BSR _kiss
+ 000004E2 0009 NOP
+ 000004E4 D33E MOV.L L688+2,R3 ; __modlu
+ 000004E6 6103 MOV R0,R1
+ 000004E8 430B JSR @R3
+ 000004EA E007 MOV #7,R0
+ 000004EC 7001 ADD #1,R0
+ 000004EE 6203 MOV R0,R2
+ 000004F0 L536:
+ 000004F0 63F6 MOV.L @R15+,R3
+ 000004F2 7D01 ADD #1,R13
+ 000004F4 2320 MOV.B R2,@R3
+ 000004F6 3DA3 CMP/GE R10,R13
+ 000004F8 8BD4 BF L532
+ 000004FA 78FF ADD #-1,R8
+ 000004FC 63E0 MOV.B @R14,R3
+ 000004FE E213 MOV #19,R2
+ 00000500 633C EXTU.B R3,R3
+ 00000502 3238 SUB R3,R2
+ 00000504 3827 CMP/GT R2,R8
+ 00000506 89C6 BT L530
+ 00000508 L529:
+ Matris.c 261 //add lines at the bottom
+ Matris.c 262 }
+ Matris.c 263 }
+ Matris.c 264 receiveline = 0;
+ 00000508 2EB0 MOV.B R11,@R14
+ 0000050A L518:
+ Matris.c 265 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 17
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 266 }
+ Matris.c 267 }
+ 0000050A 7F08 ADD #8,R15
+ 0000050C 4F26 LDS.L @R15+,PR
+ 0000050E 68F6 MOV.L @R15+,R8
+ 00000510 69F6 MOV.L @R15+,R9
+ 00000512 6AF6 MOV.L @R15+,R10
+ 00000514 6BF6 MOV.L @R15+,R11
+ 00000516 6CF6 MOV.L @R15+,R12
+ 00000518 6DF6 MOV.L @R15+,R13
+ 0000051A 000B RTS
+ 0000051C 6EF6 MOV.L @R15+,R14
+ Matris.c 268
+ Matris.c 269 void receive(void)
+ 0000051E _receive: ; function: receive
+ ; frame size=8
+ Matris.c 270 {
+ Matris.c 271 unsigned char receiveadd = 0;
+ 0000051E E300 MOV #0,R3
+ 00000520 4F22 STS.L PR,@-R15
+ 00000522 7FFC ADD #-4,R15
+ 00000524 2F30 MOV.B R3,@R15
+ Matris.c 272
+ Matris.c 273 if(Serial_ReadOneByte(&receiveadd) != 0)
+ 00000526 D334 MOV.L L688+26,R3 ; _Serial_ReadOneByte
+ 00000528 430B JSR @R3
+ 0000052A 64F3 MOV R15,R4
+ 0000052C 2008 TST R0,R0
+ 0000052E 8901 BT L537
+ Matris.c 274 {
+ Matris.c 275 receiveadd = 0;
+ 00000530 E300 MOV #0,R3
+ 00000532 2F30 MOV.B R3,@R15
+ 00000534 L537:
+ Matris.c 276 }
+ Matris.c 277
+ Matris.c 278 receiveline += (receiveadd > 20)?0:receiveadd;
+ 00000534 D52D MOV.L L688+14,R5 ; _receiveline
+ 00000536 E314 MOV #20,R3
+ 00000538 64F0 MOV.B @R15,R4
+ 0000053A 644C EXTU.B R4,R4
+ 0000053C 3437 CMP/GT R3,R4
+ 0000053E 8B01 BF L538
+ 00000540 A001 BRA L539
+ 00000542 E300 MOV #0,R3
+ 00000544 L538:
+ 00000544 6343 MOV R4,R3
+ 00000546 L539:
+ 00000546 6250 MOV.B @R5,R2
+ 00000548 323C ADD R3,R2
+ 0000054A 2520 MOV.B R2,@R5
+ Matris.c 279 }
+ 0000054C 7F04 ADD #4,R15
+ 0000054E 4F26 LDS.L @R15+,PR
+ 00000550 000B RTS
+ 00000552 0009 NOP
+ Matris.c 280
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 18
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 281 void Connect()
+ 00000554 _Connect: ; function: Connect
+ ; frame size=24
+ 00000554 2FE6 MOV.L R14,@-R15
+ 00000556 2FD6 MOV.L R13,@-R15
+ 00000558 4F22 STS.L PR,@-R15
+ 0000055A 7FF4 ADD #-12,R15
+ Matris.c 282 {
+ Matris.c 283 unsigned char connstart = 111;
+ Matris.c 284 unsigned char answer;
+ Matris.c 285 char open_mode[6];
+ Matris.c 286
+ Matris.c 287 PopUpWin(1);
+ 0000055C D327 MOV.L L688+30,R3 ; _PopUpWin
+ 0000055E 430B JSR @R3
+ 00000560 E401 MOV #1,R4
+ Matris.c 288 locate( 5 , 4);
+ 00000562 E504 MOV #4,R5
+ 00000564 D226 MOV.L L688+34,R2 ; _locate
+ 00000566 420B JSR @R2
+ 00000568 E405 MOV #5,R4
+ Matris.c 289 Print("Connecting...");
+ 0000056A D426 MOV.L L688+38,R4 ; L395
+ 0000056C D326 MOV.L L688+42,R3 ; _Print
+ 0000056E 430B JSR @R3
+ 00000570 0009 NOP
+ Matris.c 290 PutDisp_DD();
+ 00000572 D226 MOV.L L688+46,R2 ; _PutDisp_DD
+ 00000574 420B JSR @R2
+ 00000576 0009 NOP
+ Matris.c 291
+ Matris.c 292 open_mode[ 0 ] = 0; // always 0
+ Matris.c 293 open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=
+ +115200 baud
+ Matris.c 294 open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even
+ Matris.c 295 open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit
+ Matris.c 296 open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two
+ Matris.c 297 open_mode[ 5 ] = 0; // always 0
+ Matris.c 298
+ Matris.c 299 Serial_Open( &open_mode );
+ 00000578 D325 MOV.L L688+50,R3 ; _Serial_Open
+ 0000057A E400 MOV #0,R4
+ 0000057C 6043 MOV R4,R0
+ 0000057E 80F4 MOV.B R0,@(4,R15)
+ 00000580 E009 MOV #9,R0
+ 00000582 80F5 MOV.B R0,@(5,R15)
+ 00000584 E002 MOV #2,R0
+ 00000586 80F6 MOV.B R0,@(6,R15)
+ 00000588 6043 MOV R4,R0
+ 0000058A 80F7 MOV.B R0,@(7,R15)
+ 0000058C 6043 MOV R4,R0
+ 0000058E 80F8 MOV.B R0,@(8,R15)
+ 00000590 6043 MOV R4,R0
+ 00000592 64F3 MOV R15,R4
+ 00000594 80F9 MOV.B R0,@(9,R15)
+ 00000596 430B JSR @R3
+ 00000598 7404 ADD #4,R4
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 19
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000059A DD17 MOV.L L688+26,R13; _Serial_ReadOneByte
+ 0000059C DE14 MOV.L L688+18,R14; _Serial_BufferedTransmitOneByte
+ Matris.c 300
+ Matris.c 301 do
+ 0000059E L540:
+ Matris.c 302 {
+ Matris.c 303 Serial_BufferedTransmitOneByte(connstart);
+ 0000059E 4E0B JSR @R14
+ 000005A0 E46F MOV #111,R4
+ Matris.c 304 Serial_ReadOneByte(&answer);
+ 000005A2 4D0B JSR @R13
+ 000005A4 64F3 MOV R15,R4
+ Matris.c 305 }while(answer != connstart && !KeyDown(47));
+ 000005A6 60F0 MOV.B @R15,R0
+ 000005A8 600C EXTU.B R0,R0
+ 000005AA 886F CMP/EQ #111,R0
+ 000005AC 8904 BT L541
+ 000005AE D219 MOV.L L688+54,R2 ; _KeyDown
+ 000005B0 420B JSR @R2
+ 000005B2 E42F MOV #47,R4
+ 000005B4 2008 TST R0,R0
+ 000005B6 89F2 BT L540
+ 000005B8 L541:
+ Matris.c 306
+ Matris.c 307 if(!KeyDown(47))connected = True;
+ 000005B8 D216 MOV.L L688+54,R2 ; _KeyDown
+ 000005BA 420B JSR @R2
+ 000005BC E42F MOV #47,R4
+ 000005BE 2008 TST R0,R0
+ 000005C0 8B02 BF L542
+ 000005C2 E201 MOV #1,R2
+ 000005C4 D307 MOV.L L688+6,R3 ; _connected
+ 000005C6 2320 MOV.B R2,@R3
+ 000005C8 L542:
+ Matris.c 308
+ Matris.c 309 if(connected != True)
+ 000005C8 D106 MOV.L L688+6,R1 ; _connected
+ 000005CA 6010 MOV.B @R1,R0
+ 000005CC 8801 CMP/EQ #1,R0
+ 000005CE 8901 BT L543
+ Matris.c 310 {
+ Matris.c 311 Disconnect();
+ 000005D0 BDC3 BSR _Disconnect
+ 000005D2 0009 NOP
+ 000005D4 L543:
+ Matris.c 312 }
+ Matris.c 313 }
+ 000005D4 7F0C ADD #12,R15
+ 000005D6 4F26 LDS.L @R15+,PR
+ 000005D8 6DF6 MOV.L @R15+,R13
+ 000005DA 000B RTS
+ 000005DC 6EF6 MOV.L @R15+,R14
+ 000005DE L688:
+ 000005DE 0000 .DATA.W 0
+ 000005E0 <00000000> .DATA.L __modlu
+ 000005E4 <00000000> .DATA.L _connected
+ 000005E8 <00000000> .DATA.L _sendline
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 20
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000005EC <00000000> .DATA.L _receiveline
+ 000005F0 <00000000> .DATA.L _Serial_BufferedTransmitOneByte
+ 000005F4 <00000000> .DATA.L _globalmap
+ 000005F8 <00000000> .DATA.L _Serial_ReadOneByte
+ 000005FC <00000000> .DATA.L _PopUpWin
+ 00000600 <00000000> .DATA.L _locate
+ 00000604 <00000000> .DATA.L L395
+ 00000608 <00000000> .DATA.L _Print
+ 0000060C <00000000> .DATA.L _PutDisp_DD
+ 00000610 <00000000> .DATA.L _Serial_Open
+ 00000614 <00000000> .DATA.L _KeyDown
+ Matris.c 314
+ Matris.c 315 void SwapPieces()
+ 00000618 _SwapPieces: ; function: SwapPieces
+ ; frame size=8
+ ; used runtime library name:
+ ; __modlu
+ 00000618 4F22 STS.L PR,@-R15
+ 0000061A 7FFC ADD #-4,R15
+ Matris.c 316 {
+ Matris.c 317 char save;
+ Matris.c 318 if(canswap == True)
+ 0000061C D33F MOV.L L690+2,R3 ; _canswap
+ 0000061E 6030 MOV.B @R3,R0
+ 00000620 8801 CMP/EQ #1,R0
+ 00000622 8B20 BF L544
+ Matris.c 319 {
+ Matris.c 320 save = block;
+ 00000624 D53E MOV.L L690+6,R5 ; _block
+ 00000626 6150 MOV.B @R5,R1
+ 00000628 D23E MOV.L L690+10,R2 ; _hold
+ 0000062A 2F10 MOV.B R1,@R15
+ 0000062C 6420 MOV.B @R2,R4
+ 0000062E 614E EXTS.B R4,R1
+ 00000630 2118 TST R1,R1
+ 00000632 8B0B BF L545
+ Matris.c 321 if(hold == 0)
+ Matris.c 322 {
+ Matris.c 323 block = nextblock;
+ 00000634 D03C MOV.L L690+14,R0 ; _nextblock
+ 00000636 6100 MOV.B @R0,R1
+ Matris.c 324 nextblock = (kiss() % 7) + 1;
+ 00000638 BD0B BSR _kiss
+ 0000063A 2510 MOV.B R1,@R5
+ 0000063C D23B MOV.L L690+18,R2 ; __modlu
+ 0000063E 6103 MOV R0,R1
+ 00000640 420B JSR @R2
+ 00000642 E007 MOV #7,R0
+ 00000644 D338 MOV.L L690+14,R3 ; _nextblock
+ 00000646 7001 ADD #1,R0
+ 00000648 A001 BRA L546
+ 0000064A 2300 MOV.B R0,@R3
+ 0000064C L545:
+ Matris.c 325 }
+ Matris.c 326 else
+ Matris.c 327 {
+ Matris.c 328 block = hold;
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 21
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000064C 2540 MOV.B R4,@R5
+ 0000064E L546:
+ Matris.c 329 }
+ Matris.c 330 hold = save;
+ Matris.c 331 xpos = 7;
+ 0000064E E107 MOV #7,R1
+ 00000650 63F0 MOV.B @R15,R3
+ Matris.c 332 ypos = 3;
+ 00000652 E003 MOV #3,R0
+ 00000654 D233 MOV.L L690+10,R2 ; _hold
+ 00000656 2230 MOV.B R3,@R2
+ 00000658 D335 MOV.L L690+22,R3 ; _xpos
+ Matris.c 333 dir = 0;
+ 0000065A E200 MOV #0,R2
+ 0000065C 2312 MOV.L R1,@R3
+ 0000065E D135 MOV.L L690+26,R1 ; _ypos
+ 00000660 2102 MOV.L R0,@R1
+ 00000662 D035 MOV.L L690+30,R0 ; _dir
+ 00000664 2020 MOV.B R2,@R0
+ 00000666 L544:
+ Matris.c 334 }
+ Matris.c 335 canswap = False;
+ 00000666 E300 MOV #0,R3
+ 00000668 D12C MOV.L L690+2,R1 ; _canswap
+ 0000066A 2130 MOV.B R3,@R1
+ Matris.c 336 }
+ 0000066C 7F04 ADD #4,R15
+ 0000066E 4F26 LDS.L @R15+,PR
+ 00000670 000B RTS
+ 00000672 0009 NOP
+ Matris.c 337
+ Matris.c 338 void Rotate()
+ 00000674 _Rotate: ; function: Rotate
+ ; frame size=8
+ 00000674 2FE6 MOV.L R14,@-R15
+ 00000676 4F22 STS.L PR,@-R15
+ Matris.c 339 {
+ Matris.c 340 if(++dir == 4)
+ 00000678 DE2F MOV.L L690+30,R14; _dir
+ 0000067A 60E0 MOV.B @R14,R0
+ 0000067C 7001 ADD #1,R0
+ 0000067E 2E00 MOV.B R0,@R14
+ 00000680 600E EXTS.B R0,R0
+ 00000682 8804 CMP/EQ #4,R0
+ 00000684 8B01 BF L547
+ Matris.c 341 {
+ Matris.c 342 dir = 0;
+ 00000686 E200 MOV #0,R2
+ 00000688 2E20 MOV.B R2,@R14
+ 0000068A L547:
+ Matris.c 343 }
+ Matris.c 344
+ Matris.c 345 if(DrawSprite() == False)
+ 0000068A D32C MOV.L L690+34,R3 ; _DrawSprite
+ 0000068C 430B JSR @R3
+ 0000068E 0009 NOP
+ 00000690 2008 TST R0,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 22
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000692 8B07 BF L548
+ Matris.c 346 {
+ Matris.c 347 dir = (dir == 0)? 3 : dir - 1;
+ 00000694 64E0 MOV.B @R14,R4
+ 00000696 2448 TST R4,R4
+ 00000698 8B01 BF L549
+ 0000069A A002 BRA L550
+ 0000069C E303 MOV #3,R3
+ 0000069E L549:
+ 0000069E 6343 MOV R4,R3
+ 000006A0 73FF ADD #-1,R3
+ 000006A2 L550:
+ 000006A2 2E30 MOV.B R3,@R14
+ 000006A4 L548:
+ Matris.c 348 }
+ Matris.c 349 }
+ 000006A4 4F26 LDS.L @R15+,PR
+ 000006A6 000B RTS
+ 000006A8 6EF6 MOV.L @R15+,R14
+ Matris.c 350
+ Matris.c 351 void MoveBlock()
+ 000006AA _MoveBlock: ; function: MoveBlock
+ ; frame size=12
+ 000006AA 2FE6 MOV.L R14,@-R15
+ 000006AC 2FD6 MOV.L R13,@-R15
+ 000006AE 4F22 STS.L PR,@-R15
+ Matris.c 352 {
+ Matris.c 353 switch (nextdir)
+ 000006B0 D41F MOV.L L690+22,R4 ; _xpos
+ 000006B2 DE23 MOV.L L690+38,R14; _nextdir
+ 000006B4 60E0 MOV.B @R14,R0
+ 000006B6 88FF CMP/EQ #-1,R0
+ 000006B8 8D08 BT/S L494
+ 000006BA ED00 MOV #0,R13
+ 000006BC 8801 CMP/EQ #1,R0
+ 000006BE 890D BT L495
+ 000006C0 8814 CMP/EQ #20,R0
+ 000006C2 8913 BT L496
+ 000006C4 880A CMP/EQ #10,R0
+ 000006C6 8915 BT L497
+ 000006C8 A017 BRA L551
+ 000006CA 0009 NOP
+ 000006CC L494: ; case label
+ Matris.c 354 {
+ Matris.c 355 case Left : if(left == True) {xpos ++;} nextdir = Down;break;
+ 000006CC D31D MOV.L L690+42,R3 ; _left
+ 000006CE 6030 MOV.B @R3,R0
+ 000006D0 8801 CMP/EQ #1,R0
+ 000006D2 8B11 BF L676
+ 000006D4 6142 MOV.L @R4,R1
+ 000006D6 7101 ADD #1,R1
+ 000006D8 A00E BRA L676
+ 000006DA 2412 MOV.L R1,@R4
+ 000006DC L495: ; case label
+ Matris.c 356 case Right: if(right == True){xpos --;}nextdir = Down;break;
+ 000006DC D31A MOV.L L690+46,R3 ; _right
+ 000006DE 6030 MOV.B @R3,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 23
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000006E0 8801 CMP/EQ #1,R0
+ 000006E2 8B09 BF L676
+ 000006E4 6142 MOV.L @R4,R1
+ 000006E6 71FF ADD #-1,R1
+ 000006E8 A006 BRA L676
+ 000006EA 2412 MOV.L R1,@R4
+ 000006EC L496: ; case label
+ Matris.c 357 case Rot : Rotate();nextdir = Down;break;
+ 000006EC BFC2 BSR _Rotate
+ 000006EE 0009 NOP
+ 000006F0 A002 BRA L676
+ 000006F2 0009 NOP
+ 000006F4 L497: ; case label
+ Matris.c 358 case Swap: SwapPieces();nextdir = Down;break;
+ 000006F4 BF90 BSR _SwapPieces
+ 000006F6 0009 NOP
+ 000006F8 L676:
+ 000006F8 2ED0 MOV.B R13,@R14
+ 000006FA L551:
+ Matris.c 359 }
+ Matris.c 360
+ Matris.c 361 if(nextdir == Fast && (int)slowyposdown == slowyposdown)
+ 000006FA 60E0 MOV.B @R14,R0
+ 000006FC 881E CMP/EQ #30,R0
+ 000006FE 8B08 BF L554
+ 00000700 D312 MOV.L L690+50,R3 ; _slowyposdown
+ 00000702 6230 MOV.B @R3,R2
+ 00000704 6130 MOV.B @R3,R1
+ 00000706 3210 CMP/EQ R1,R2
+ 00000708 8B03 BF L554
+ Matris.c 362 {
+ Matris.c 363 points += 1;
+ 0000070A D411 MOV.L L690+54,R4 ; _points
+ 0000070C 6342 MOV.L @R4,R3
+ 0000070E 7301 ADD #1,R3
+ 00000710 2432 MOV.L R3,@R4
+ 00000712 L554:
+ Matris.c 364 }
+ Matris.c 365 }
+ 00000712 4F26 LDS.L @R15+,PR
+ 00000714 6DF6 MOV.L @R15+,R13
+ 00000716 000B RTS
+ 00000718 6EF6 MOV.L @R15+,R14
+ 0000071A L690:
+ 0000071A 0000 .DATA.W 0
+ 0000071C <00000000> .DATA.L _canswap
+ 00000720 <00000000> .DATA.L _block
+ 00000724 <00000000> .DATA.L _hold
+ 00000728 <00000000> .DATA.L _nextblock
+ 0000072C <00000000> .DATA.L __modlu
+ 00000730 <00000000> .DATA.L _xpos
+ 00000734 <00000000> .DATA.L _ypos
+ 00000738 <00000000> .DATA.L _dir
+ 0000073C <00000000> .DATA.L _DrawSprite
+ 00000740 <00000000> .DATA.L _nextdir
+ 00000744 <00000000> .DATA.L _left
+ 00000748 <00000000> .DATA.L _right
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 24
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000074C <00000000> .DATA.L _slowyposdown
+ 00000750 <00000000> .DATA.L _points
+ Matris.c 366
+ Matris.c 367 void CheckPoints()
+ 00000754 _CheckPoints: ; function: CheckPoints
+ ; frame size=80
+ ; used runtime library name:
+ ; __divls
+ 00000754 2FE6 MOV.L R14,@-R15
+ 00000756 2FD6 MOV.L R13,@-R15
+ 00000758 2FC6 MOV.L R12,@-R15
+ 0000075A 2FB6 MOV.L R11,@-R15
+ 0000075C 2FA6 MOV.L R10,@-R15
+ Matris.c 368 {
+ Matris.c 369 char typecount = 0;
+ 0000075E EA00 MOV #0,R10
+ 00000760 DC88 MOV.L L691,R12 ; _globalmap
+ 00000762 60A3 MOV R10,R0
+ Matris.c 370 char oldlevel;
+ Matris.c 371 int xcount, ycount;
+ Matris.c 372 int ycount2, ycount3;
+ Matris.c 373 char fulllinecount = 0;
+ Matris.c 374
+ Matris.c 375 for(xcount = 0; xcount < 10; xcount ++)
+ 00000764 D688 MOV.L L691+4,R6 ; _exit
+ 00000766 65C3 MOV R12,R5
+ 00000768 2F96 MOV.L R9,@-R15
+ 0000076A 64C3 MOV R12,R4
+ 0000076C 2F86 MOV.L R8,@-R15
+ 0000076E 750A ADD #10,R5
+ 00000770 4F22 STS.L PR,@-R15
+ 00000772 3452 CMP/HS R5,R4
+ 00000774 4F12 STS.L MACL,@-R15
+ 00000776 7FF4 ADD #-12,R15
+ 00000778 8D08 BT/S L555
+ 0000077A 80F8 MOV.B R0,@(8,R15)
+ 0000077C L556:
+ Matris.c 376 {
+ Matris.c 377 if(globalmap[0][xcount] != 0)
+ 0000077C 6240 MOV.B @R4,R2
+ 0000077E 2228 TST R2,R2
+ 00000780 8D02 BT/S L557
+ 00000782 7401 ADD #1,R4
+ Matris.c 378 {
+ Matris.c 379 exit = True;
+ 00000784 E101 MOV #1,R1
+ 00000786 2610 MOV.B R1,@R6
+ 00000788 L557:
+ 00000788 3452 CMP/HS R5,R4
+ 0000078A 8BF7 BF L556
+ 0000078C L555:
+ Matris.c 380 //game over
+ Matris.c 381 }
+ Matris.c 382 }
+ Matris.c 383
+ Matris.c 384 for(ycount = 0; ycount < 20; ycount ++)
+ 0000078C 1FA1 MOV.L R10,@(4,R15)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 25
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000078E E90A MOV #10,R9
+ 00000790 DB7E MOV.L L691+8,R11 ; _pScreen
+ 00000792 L558:
+ Matris.c 385 {
+ Matris.c 386 fulllinecount = 0;
+ 00000792 67A3 MOV R10,R7
+ 00000794 54F1 MOV.L @(4,R15),R4
+ 00000796 66C3 MOV R12,R6
+ Matris.c 387 for(xcount = 0; xcount < 10; xcount ++)
+ 00000798 65A3 MOV R10,R5
+ 0000079A 6343 MOV R4,R3
+ 0000079C 4408 SHLL2 R4
+ 0000079E 343C ADD R3,R4
+ 000007A0 4400 SHLL R4
+ 000007A2 34CC ADD R12,R4
+ 000007A4 L560:
+ Matris.c 388 {
+ Matris.c 389 if(globalmap[ycount][xcount] != 0)
+ 000007A4 6340 MOV.B @R4,R3
+ 000007A6 2338 TST R3,R3
+ 000007A8 8904 BT L559
+ Matris.c 390 {
+ Matris.c 391 fulllinecount ++;
+ 000007AA 7701 ADD #1,R7
+ 000007AC 7501 ADD #1,R5
+ 000007AE 3593 CMP/GE R9,R5
+ 000007B0 8FF8 BF/S L560
+ 000007B2 7401 ADD #1,R4
+ 000007B4 L559:
+ Matris.c 392 }
+ Matris.c 393 else
+ Matris.c 394 {
+ Matris.c 395 break;
+ Matris.c 396 }
+ Matris.c 397 }
+ Matris.c 398
+ Matris.c 399 if(fulllinecount == 10)
+ 000007B4 607E EXTS.B R7,R0
+ 000007B6 880A CMP/EQ #10,R0
+ 000007B8 8901 BT L692
+ 000007BA A102 BRA L564
+ 000007BC 0009 NOP
+ 000007BE L692:
+ Matris.c 400 {
+ Matris.c 401 typecount ++;
+ 000007BE 84F8 MOV.B @(8,R15),R0
+ 000007C0 7001 ADD #1,R0
+ 000007C2 80F8 MOV.B R0,@(8,R15)
+ Matris.c 402
+ Matris.c 403 //1: single, 2: double, 3: triple line, 4: tetris (maximum)
+ Matris.c 404
+ Matris.c 405 for(ycount2 = ycount; ycount2 > 0; ycount2 --)
+ 000007C4 55F1 MOV.L @(4,R15),R5
+ 000007C6 6D53 MOV R5,R13
+ 000007C8 6353 MOV R5,R3
+ 000007CA 4D08 SHLL2 R13
+ 000007CC 3D3C ADD R3,R13
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 26
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000007CE 4D00 SHLL R13
+ 000007D0 3D6C ADD R6,R13
+ 000007D2 6E53 MOV R5,R14
+ 000007D4 7EFF ADD #-1,R14
+ 000007D6 63E3 MOV R14,R3
+ 000007D8 4E08 SHLL2 R14
+ 000007DA 3E3C ADD R3,R14
+ 000007DC 4E00 SHLL R14
+ 000007DE 4515 CMP/PL R5
+ 000007E0 8F11 BF/S L565
+ 000007E2 3E6C ADD R6,R14
+ 000007E4 L566:
+ Matris.c 406 {
+ Matris.c 407 for(xcount = 0; xcount < 10; xcount ++)
+ 000007E4 66A3 MOV R10,R6
+ 000007E6 67E3 MOV R14,R7
+ 000007E8 64D3 MOV R13,R4
+ 000007EA L568:
+ 000007EA 7602 ADD #2,R6
+ Matris.c 408 {
+ Matris.c 409 globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount];
+ 000007EC 6374 MOV.B @R7+,R3
+ 000007EE 3693 CMP/GE R9,R6
+ 000007F0 2430 MOV.B R3,@R4
+ 000007F2 7401 ADD #1,R4
+ 000007F4 6374 MOV.B @R7+,R3
+ 000007F6 2430 MOV.B R3,@R4
+ 000007F8 8FF7 BF/S L568
+ 000007FA 7401 ADD #1,R4
+ 000007FC 75FF ADD #-1,R5
+ 000007FE 7DF6 ADD #-10,R13
+ 00000800 4515 CMP/PL R5
+ 00000802 8DEF BT/S L566
+ 00000804 7EF6 ADD #-10,R14
+ 00000806 L565:
+ Matris.c 410 //move averything
+ Matris.c 411 }
+ Matris.c 412 }
+ Matris.c 413
+ Matris.c 414 line(pScreen, 0 , 0 , 81 , 0, 1);
+ 00000806 E201 MOV #1,R2
+ 00000808 D361 MOV.L L691+12,R3 ; _line
+ 0000080A E751 MOV #81,R7
+ 0000080C 2F26 MOV.L R2,@-R15
+ 0000080E E600 MOV #0,R6
+ 00000810 2FA6 MOV.L R10,@-R15
+ 00000812 6563 MOV R6,R5
+ 00000814 430B JSR @R3
+ 00000816 64B2 MOV.L @R11,R4
+ Matris.c 415 line(pScreen, 0 , 0 , 0 , 41, 1);
+ 00000818 D15D MOV.L L691+12,R1 ; _line
+ 0000081A E201 MOV #1,R2
+ 0000081C 2F26 MOV.L R2,@-R15
+ 0000081E E329 MOV #41,R3
+ 00000820 2F36 MOV.L R3,@-R15
+ 00000822 E700 MOV #0,R7
+ 00000824 6673 MOV R7,R6
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 27
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000826 6573 MOV R7,R5
+ 00000828 410B JSR @R1
+ 0000082A 64B2 MOV.L @R11,R4
+ Matris.c 416 line(pScreen, 81 , 0 , 81 , 41, 1);
+ 0000082C D158 MOV.L L691+12,R1 ; _line
+ 0000082E E301 MOV #1,R3
+ 00000830 2F36 MOV.L R3,@-R15
+ 00000832 E229 MOV #41,R2
+ 00000834 2F26 MOV.L R2,@-R15
+ 00000836 E751 MOV #81,R7
+ 00000838 E600 MOV #0,R6
+ 0000083A 6573 MOV R7,R5
+ 0000083C 410B JSR @R1
+ 0000083E 64B2 MOV.L @R11,R4
+ Matris.c 417 line(pScreen, 81 , 41 , 0 , 41, 1);
+ 00000840 D153 MOV.L L691+12,R1 ; _line
+ 00000842 E301 MOV #1,R3
+ 00000844 2F36 MOV.L R3,@-R15
+ 00000846 E229 MOV #41,R2
+ 00000848 2F26 MOV.L R2,@-R15
+ 0000084A E700 MOV #0,R7
+ 0000084C 6623 MOV R2,R6
+ 0000084E E551 MOV #81,R5
+ 00000850 410B JSR @R1
+ 00000852 64B2 MOV.L @R11,R4
+ 00000854 7F20 ADD #32,R15
+ Matris.c 418
+ Matris.c 419 for(ycount3 = 0; ycount3 < 20; ycount3 ++)
+ 00000856 68A3 MOV R10,R8
+ 00000858 L569:
+ Matris.c 420 {
+ Matris.c 421 for(xcount = 0; xcount < 10; xcount ++)
+ 00000858 6EA3 MOV R10,R14
+ 0000085A 6D83 MOV R8,R13
+ 0000085C 6383 MOV R8,R3
+ 0000085E 4D08 SHLL2 R13
+ 00000860 3D3C ADD R3,R13
+ 00000862 4D00 SHLL R13
+ 00000864 L571:
+ Matris.c 422 {
+ Matris.c 423 if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] !
+ += 0)
+ 00000864 60D3 MOV R13,R0
+ 00000866 30CC ADD R12,R0
+ 00000868 03EC MOV.B @(R0,R14),R3
+ 0000086A 2338 TST R3,R3
+ 0000086C 8B05 BF L573
+ 0000086E D149 MOV.L L691+16,R1 ; _changemap
+ 00000870 31DC ADD R13,R1
+ 00000872 31EC ADD R14,R1
+ 00000874 6310 MOV.B @R1,R3
+ 00000876 2338 TST R3,R3
+ 00000878 8911 BT L572
+ 0000087A L573:
+ Matris.c 424 {
+ Matris.c 425 fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcou
+ +nt] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1);
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 28
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000087A 60D3 MOV R13,R0
+ 0000087C 30CC ADD R12,R0
+ 0000087E 07EC MOV.B @(R0,R14),R7
+ 00000880 2778 TST R7,R7
+ 00000882 8D02 BT/S L574
+ 00000884 2F72 MOV.L R7,@R15
+ 00000886 A004 BRA L677
+ 00000888 67F2 MOV.L @R15,R7
+ 0000088A L574:
+ 0000088A D742 MOV.L L691+16,R7 ; _changemap
+ 0000088C 37DC ADD R13,R7
+ 0000088E 37EC ADD R14,R7
+ 00000890 6770 MOV.B @R7,R7
+ 00000892 L677:
+ 00000892 77FF ADD #-1,R7
+ 00000894 D240 MOV.L L691+20,R2 ; _fillbox
+ 00000896 66E3 MOV R14,R6
+ 00000898 6583 MOV R8,R5
+ 0000089A 420B JSR @R2
+ 0000089C 64B2 MOV.L @R11,R4
+ 0000089E L572:
+ 0000089E 7E01 ADD #1,R14
+ 000008A0 60D3 MOV R13,R0
+ 000008A2 30CC ADD R12,R0
+ 000008A4 03EC MOV.B @(R0,R14),R3
+ 000008A6 2338 TST R3,R3
+ 000008A8 8B05 BF L577
+ 000008AA D13A MOV.L L691+16,R1 ; _changemap
+ 000008AC 31DC ADD R13,R1
+ 000008AE 31EC ADD R14,R1
+ 000008B0 6310 MOV.B @R1,R3
+ 000008B2 2338 TST R3,R3
+ 000008B4 8911 BT L576
+ 000008B6 L577:
+ 000008B6 60D3 MOV R13,R0
+ 000008B8 30CC ADD R12,R0
+ 000008BA 07EC MOV.B @(R0,R14),R7
+ 000008BC 2778 TST R7,R7
+ 000008BE 8D02 BT/S L578
+ 000008C0 2F72 MOV.L R7,@R15
+ 000008C2 A004 BRA L678
+ 000008C4 67F2 MOV.L @R15,R7
+ 000008C6 L578:
+ 000008C6 D733 MOV.L L691+16,R7 ; _changemap
+ 000008C8 37DC ADD R13,R7
+ 000008CA 37EC ADD R14,R7
+ 000008CC 6770 MOV.B @R7,R7
+ 000008CE L678:
+ 000008CE 77FF ADD #-1,R7
+ 000008D0 D231 MOV.L L691+20,R2 ; _fillbox
+ 000008D2 66E3 MOV R14,R6
+ 000008D4 6583 MOV R8,R5
+ 000008D6 420B JSR @R2
+ 000008D8 64B2 MOV.L @R11,R4
+ 000008DA L576:
+ 000008DA 7E01 ADD #1,R14
+ 000008DC 60D3 MOV R13,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 29
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000008DE 30CC ADD R12,R0
+ 000008E0 03EC MOV.B @(R0,R14),R3
+ 000008E2 2338 TST R3,R3
+ 000008E4 8B05 BF L581
+ 000008E6 D12B MOV.L L691+16,R1 ; _changemap
+ 000008E8 31DC ADD R13,R1
+ 000008EA 31EC ADD R14,R1
+ 000008EC 6310 MOV.B @R1,R3
+ 000008EE 2338 TST R3,R3
+ 000008F0 8911 BT L580
+ 000008F2 L581:
+ 000008F2 60D3 MOV R13,R0
+ 000008F4 30CC ADD R12,R0
+ 000008F6 07EC MOV.B @(R0,R14),R7
+ 000008F8 2778 TST R7,R7
+ 000008FA 8D02 BT/S L582
+ 000008FC 2F72 MOV.L R7,@R15
+ 000008FE A004 BRA L679
+ 00000900 67F2 MOV.L @R15,R7
+ 00000902 L582:
+ 00000902 D724 MOV.L L691+16,R7 ; _changemap
+ 00000904 37DC ADD R13,R7
+ 00000906 37EC ADD R14,R7
+ 00000908 6770 MOV.B @R7,R7
+ 0000090A L679:
+ 0000090A 77FF ADD #-1,R7
+ 0000090C D222 MOV.L L691+20,R2 ; _fillbox
+ 0000090E 66E3 MOV R14,R6
+ 00000910 6583 MOV R8,R5
+ 00000912 420B JSR @R2
+ 00000914 64B2 MOV.L @R11,R4
+ 00000916 L580:
+ 00000916 7E01 ADD #1,R14
+ 00000918 60D3 MOV R13,R0
+ 0000091A 30CC ADD R12,R0
+ 0000091C 03EC MOV.B @(R0,R14),R3
+ 0000091E 2338 TST R3,R3
+ 00000920 8B05 BF L585
+ 00000922 D11C MOV.L L691+16,R1 ; _changemap
+ 00000924 31DC ADD R13,R1
+ 00000926 31EC ADD R14,R1
+ 00000928 6310 MOV.B @R1,R3
+ 0000092A 2338 TST R3,R3
+ 0000092C 8911 BT L584
+ 0000092E L585:
+ 0000092E 60D3 MOV R13,R0
+ 00000930 30CC ADD R12,R0
+ 00000932 07EC MOV.B @(R0,R14),R7
+ 00000934 2778 TST R7,R7
+ 00000936 8D02 BT/S L586
+ 00000938 2F72 MOV.L R7,@R15
+ 0000093A A004 BRA L680
+ 0000093C 67F2 MOV.L @R15,R7
+ 0000093E L586:
+ 0000093E D715 MOV.L L691+16,R7 ; _changemap
+ 00000940 37DC ADD R13,R7
+ 00000942 37EC ADD R14,R7
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 30
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000944 6770 MOV.B @R7,R7
+ 00000946 L680:
+ 00000946 77FF ADD #-1,R7
+ 00000948 D213 MOV.L L691+20,R2 ; _fillbox
+ 0000094A 66E3 MOV R14,R6
+ 0000094C 6583 MOV R8,R5
+ 0000094E 420B JSR @R2
+ 00000950 64B2 MOV.L @R11,R4
+ 00000952 L584:
+ 00000952 7E01 ADD #1,R14
+ 00000954 E306 MOV #6,R3
+ 00000956 3E33 CMP/GE R3,R14
+ 00000958 8B84 BF L571
+ 0000095A 3E93 CMP/GE R9,R14
+ 0000095C 892B BT L588
+ 0000095E L589:
+ 0000095E 60D3 MOV R13,R0
+ 00000960 30CC ADD R12,R0
+ 00000962 03EC MOV.B @(R0,R14),R3
+ 00000964 2338 TST R3,R3
+ 00000966 8B05 BF L591
+ 00000968 D10A MOV.L L691+16,R1 ; _changemap
+ 0000096A 31DC ADD R13,R1
+ 0000096C 31EC ADD R14,R1
+ 0000096E 6310 MOV.B @R1,R3
+ 00000970 2338 TST R3,R3
+ 00000972 891D BT L590
+ 00000974 L591:
+ 00000974 60D3 MOV R13,R0
+ 00000976 30CC ADD R12,R0
+ 00000978 07EC MOV.B @(R0,R14),R7
+ 0000097A 2778 TST R7,R7
+ 0000097C 8D0E BT/S L592
+ 0000097E 2F72 MOV.L R7,@R15
+ 00000980 A010 BRA L681
+ 00000982 67F2 MOV.L @R15,R7
+ 00000984 L691:
+ 00000984 <00000000> .DATA.L _globalmap
+ 00000988 <00000000> .DATA.L _exit
+ 0000098C <00000000> .DATA.L _pScreen
+ 00000990 <00000000> .DATA.L _line
+ 00000994 <00000000> .DATA.L _changemap
+ 00000998 <00000000> .DATA.L _fillbox
+ 0000099C L592:
+ 0000099C D73C MOV.L L693+8,R7 ; _changemap
+ 0000099E 37DC ADD R13,R7
+ 000009A0 37EC ADD R14,R7
+ 000009A2 6770 MOV.B @R7,R7
+ 000009A4 L681:
+ 000009A4 D23B MOV.L L693+12,R2 ; _fillbox
+ 000009A6 77FF ADD #-1,R7
+ 000009A8 66E3 MOV R14,R6
+ 000009AA 6583 MOV R8,R5
+ 000009AC 420B JSR @R2
+ 000009AE 64B2 MOV.L @R11,R4
+ 000009B0 L590:
+ 000009B0 7E01 ADD #1,R14
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 31
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000009B2 3E93 CMP/GE R9,R14
+ 000009B4 8BD3 BF L589
+ 000009B6 L588:
+ 000009B6 7801 ADD #1,R8
+ 000009B8 E214 MOV #20,R2
+ 000009BA 3823 CMP/GE R2,R8
+ 000009BC 8901 BT L694
+ 000009BE AF4B BRA L569
+ 000009C0 0009 NOP
+ 000009C2 L694:
+ 000009C2 L564:
+ 000009C2 E314 MOV #20,R3
+ 000009C4 51F1 MOV.L @(4,R15),R1
+ 000009C6 7101 ADD #1,R1
+ 000009C8 3133 CMP/GE R3,R1
+ 000009CA 8D02 BT/S L695
+ 000009CC 1F11 MOV.L R1,@(4,R15)
+ 000009CE AEE0 BRA L558
+ 000009D0 0009 NOP
+ 000009D2 L695:
+ 000009D2 84F8 MOV.B @(8,R15),R0
+ 000009D4 6E03 MOV R0,R14
+ 000009D6 4E15 CMP/PL R14
+ 000009D8 8B4B BF L594
+ Matris.c 426 }
+ Matris.c 427 }
+ Matris.c 428 }
+ Matris.c 429 }
+ Matris.c 430 }
+ Matris.c 431 if(typecount > 0)
+ Matris.c 432 {
+ Matris.c 433 int blink;
+ Matris.c 434
+ Matris.c 435 points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount =
+ += 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0;
+ 000009DA 60E3 MOV R14,R0
+ 000009DC D42E MOV.L L693+16,R4 ; _points
+ 000009DE 8801 CMP/EQ #1,R0
+ 000009E0 8B08 BF L595
+ 000009E2 D32E MOV.L L693+20,R3 ; _level
+ 000009E4 6230 MOV.B @R3,R2
+ 000009E6 7201 ADD #1,R2
+ 000009E8 6123 MOV R2,R1
+ 000009EA 4208 SHLL2 R2
+ 000009EC 321C ADD R1,R2
+ 000009EE 4208 SHLL2 R2
+ 000009F0 A01B BRA L599
+ 000009F2 4200 SHLL R2
+ 000009F4 L595:
+ 000009F4 8802 CMP/EQ #2,R0
+ 000009F6 8B04 BF L596
+ 000009F8 D328 MOV.L L693+20,R3 ; _level
+ 000009FA E164 MOV #100,R1
+ 000009FC 6230 MOV.B @R3,R2
+ 000009FE A011 BRA L683
+ 00000A00 221F MULS R1,R2
+ 00000A02 L596:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 32
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000A02 60E3 MOV R14,R0
+ 00000A04 8803 CMP/EQ #3,R0
+ 00000A06 8B06 BF L597
+ 00000A08 D324 MOV.L L693+20,R3 ; _level
+ 00000A0A 6230 MOV.B @R3,R2
+ 00000A0C 913C MOV.W L693,R1 ; H'012C
+ 00000A0E 7201 ADD #1,R2
+ 00000A10 0217 MUL.L R1,R2
+ 00000A12 A007 BRA L683
+ 00000A14 0009 NOP
+ 00000A16 L597:
+ 00000A16 8804 CMP/EQ #4,R0
+ 00000A18 8B06 BF L598
+ 00000A1A D320 MOV.L L693+20,R3 ; _level
+ 00000A1C 9135 MOV.W L693+2,R1 ; H'04B0
+ 00000A1E 6230 MOV.B @R3,R2
+ 00000A20 7201 ADD #1,R2
+ 00000A22 0217 MUL.L R1,R2
+ 00000A24 L683:
+ 00000A24 A001 BRA L599
+ 00000A26 021A STS MACL,R2
+ 00000A28 L598:
+ 00000A28 E200 MOV #0,R2
+ 00000A2A L599:
+ Matris.c 436 //increment points
+ Matris.c 437
+ Matris.c 438 sendline = (typecount == 4)? 4 : typecount - 1;
+ 00000A2A 60E3 MOV R14,R0
+ 00000A2C 6342 MOV.L @R4,R3
+ 00000A2E 8804 CMP/EQ #4,R0
+ 00000A30 332C ADD R2,R3
+ 00000A32 2432 MOV.L R3,@R4
+ 00000A34 8B01 BF L603
+ 00000A36 A002 BRA L604
+ 00000A38 E204 MOV #4,R2
+ 00000A3A L603:
+ 00000A3A 62E3 MOV R14,R2
+ 00000A3C 72FF ADD #-1,R2
+ 00000A3E L604:
+ 00000A3E D318 MOV.L L693+24,R3 ; _sendline
+ Matris.c 439 //send a line, if not tetris send lines - 1
+ Matris.c 440 oldlevel = level;
+ 00000A40 D416 MOV.L L693+20,R4 ; _level
+ 00000A42 2320 MOV.B R2,@R3
+ 00000A44 6540 MOV.B @R4,R5
+ Matris.c 441 level += typecount;
+ 00000A46 84F8 MOV.B @(8,R15),R0
+ 00000A48 6140 MOV.B @R4,R1
+ 00000A4A 310C ADD R0,R1
+ 00000A4C 2410 MOV.B R1,@R4
+ Matris.c 442 if((int)(level / 10) != (int)(oldlevel / 10) && level < 200)
+ 00000A4E 6640 MOV.B @R4,R6
+ 00000A50 D214 MOV.L L693+28,R2 ; __divls
+ 00000A52 6163 MOV R6,R1
+ 00000A54 420B JSR @R2
+ 00000A56 6093 MOV R9,R0
+ 00000A58 D212 MOV.L L693+28,R2 ; __divls
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 33
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000A5A 6303 MOV R0,R3
+ 00000A5C 615E EXTS.B R5,R1
+ 00000A5E 420B JSR @R2
+ 00000A60 6093 MOV R9,R0
+ 00000A62 3300 CMP/EQ R0,R3
+ 00000A64 8905 BT L594
+ 00000A66 9311 MOV.W L693+4,R3 ; H'00C8
+ 00000A68 3633 CMP/GE R3,R6
+ 00000A6A 8902 BT L594
+ Matris.c 443 {
+ Matris.c 444 levelchanged = True;
+ 00000A6C D20E MOV.L L693+32,R2 ; _levelchanged
+ 00000A6E E101 MOV #1,R1
+ 00000A70 2210 MOV.B R1,@R2
+ 00000A72 L594:
+ Matris.c 445 //level = round cleared lines / 10
+ Matris.c 446 }
+ Matris.c 447 }
+ Matris.c 448 Transfer();
+ 00000A72 7F0C ADD #12,R15
+ 00000A74 4F16 LDS.L @R15+,MACL
+ 00000A76 4F26 LDS.L @R15+,PR
+ 00000A78 68F6 MOV.L @R15+,R8
+ 00000A7A 69F6 MOV.L @R15+,R9
+ 00000A7C 6AF6 MOV.L @R15+,R10
+ 00000A7E 6BF6 MOV.L @R15+,R11
+ 00000A80 6CF6 MOV.L @R15+,R12
+ 00000A82 6DF6 MOV.L @R15+,R13
+ 00000A84 AC98 BRA _Transfer
+ 00000A86 6EF6 MOV.L @R15+,R14
+ 00000A88 L693:
+ 00000A88 012C .DATA.W H'012C
+ 00000A8A 04B0 .DATA.W H'04B0
+ 00000A8C 00C8 .DATA.W H'00C8
+ 00000A8E 0000 .DATA.W 0
+ 00000A90 <00000000> .DATA.L _changemap
+ 00000A94 <00000000> .DATA.L _fillbox
+ 00000A98 <00000000> .DATA.L _points
+ 00000A9C <00000000> .DATA.L _level
+ 00000AA0 <00000000> .DATA.L _sendline
+ 00000AA4 <00000000> .DATA.L __divls
+ 00000AA8 <00000000> .DATA.L _levelchanged
+ Matris.c 449 }
+ Matris.c 450
+ Matris.c 451 void ReadKey()
+ 00000AAC _ReadKey: ; function: ReadKey
+ ; frame size=12
+ 00000AAC 2FE6 MOV.L R14,@-R15
+ Matris.c 452 {
+ Matris.c 453 nextdir =Down;
+ 00000AAE E300 MOV #0,R3
+ 00000AB0 2FD6 MOV.L R13,@-R15
+ 00000AB2 4F22 STS.L PR,@-R15
+ 00000AB4 DD32 MOV.L L696,R13 ; _nextdir
+ 00000AB6 2D30 MOV.B R3,@R13
+ Matris.c 454
+ Matris.c 455 if(KeyDown(38)) nextdir = Rot;
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 34
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000AB8 DE32 MOV.L L696+4,R14 ; _KeyDown
+ 00000ABA 4E0B JSR @R14
+ 00000ABC E426 MOV #38,R4
+ 00000ABE 2008 TST R0,R0
+ 00000AC0 8D02 BT/S L606
+ Matris.c 456 if(KeyDown(37)) nextdir = Left ;
+ 00000AC2 E425 MOV #37,R4
+ 00000AC4 E314 MOV #20,R3
+ 00000AC6 2D30 MOV.B R3,@R13
+ 00000AC8 L606:
+ 00000AC8 4E0B JSR @R14
+ 00000ACA 0009 NOP
+ 00000ACC 2008 TST R0,R0
+ 00000ACE 8D02 BT/S L607
+ Matris.c 457 if(KeyDown(28)) nextdir = Right;
+ 00000AD0 E41C MOV #28,R4
+ 00000AD2 E3FF MOV #-1,R3
+ 00000AD4 2D30 MOV.B R3,@R13
+ 00000AD6 L607:
+ 00000AD6 4E0B JSR @R14
+ 00000AD8 0009 NOP
+ 00000ADA 2008 TST R0,R0
+ 00000ADC 8D02 BT/S L608
+ Matris.c 458 if(KeyDown(27)) nextdir = Fast;
+ 00000ADE E41B MOV #27,R4
+ 00000AE0 E301 MOV #1,R3
+ 00000AE2 2D30 MOV.B R3,@R13
+ 00000AE4 L608:
+ 00000AE4 4E0B JSR @R14
+ 00000AE6 0009 NOP
+ 00000AE8 2008 TST R0,R0
+ 00000AEA 8D02 BT/S L609
+ Matris.c 459 if(KeyDown(47)) exit = True;
+ 00000AEC E42F MOV #47,R4
+ 00000AEE E31E MOV #30,R3
+ 00000AF0 2D30 MOV.B R3,@R13
+ 00000AF2 L609:
+ 00000AF2 4E0B JSR @R14
+ 00000AF4 0009 NOP
+ 00000AF6 2008 TST R0,R0
+ 00000AF8 8D03 BT/S L610
+ Matris.c 460 if(KeyDown(26)) nextdir = Swap;
+ 00000AFA E41A MOV #26,R4
+ 00000AFC D222 MOV.L L696+8,R2 ; _exit
+ 00000AFE E301 MOV #1,R3
+ 00000B00 2230 MOV.B R3,@R2
+ 00000B02 L610:
+ 00000B02 4E0B JSR @R14
+ 00000B04 0009 NOP
+ 00000B06 2008 TST R0,R0
+ 00000B08 8D02 BT/S L611
+ Matris.c 461 if(KeyDown(31)) TeacherMode();
+ 00000B0A E41F MOV #31,R4
+ 00000B0C E20A MOV #10,R2
+ 00000B0E 2D20 MOV.B R2,@R13
+ 00000B10 L611:
+ 00000B10 4E0B JSR @R14
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 35
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000B12 0009 NOP
+ 00000B14 2008 TST R0,R0
+ 00000B16 8901 BT L612
+ 00000B18 BB28 BSR _TeacherMode
+ 00000B1A 0009 NOP
+ 00000B1C L612:
+ Matris.c 462 if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));}
+ 00000B1C 4E0B JSR @R14
+ 00000B1E E427 MOV #39,R4
+ 00000B20 2008 TST R0,R0
+ 00000B22 890B BT L613
+ 00000B24 D419 MOV.L L696+12,R4 ; _pause
+ 00000B26 6040 MOV.B @R4,R0
+ 00000B28 8801 CMP/EQ #1,R0
+ 00000B2A 8B01 BF L614
+ 00000B2C A001 BRA L615
+ 00000B2E E200 MOV #0,R2
+ 00000B30 L614:
+ 00000B30 E201 MOV #1,R2
+ 00000B32 L615:
+ 00000B32 2420 MOV.B R2,@R4
+ 00000B34 L616:
+ 00000B34 4E0B JSR @R14
+ 00000B36 E427 MOV #39,R4
+ 00000B38 2008 TST R0,R0
+ 00000B3A 8BFB BF L616
+ 00000B3C L613:
+ Matris.c 463 }
+ 00000B3C 4F26 LDS.L @R15+,PR
+ 00000B3E 6DF6 MOV.L @R15+,R13
+ 00000B40 000B RTS
+ 00000B42 6EF6 MOV.L @R15+,R14
+ Matris.c 464
+ Matris.c 465 void Main(void)
+ 00000B44 _Main: ; function: Main
+ ; frame size=16
+ ; used runtime library name:
+ ; __modls
+ 00000B44 2FE6 MOV.L R14,@-R15
+ Matris.c 466 {
+ Matris.c 467 cantrans = False;
+ 00000B46 E400 MOV #0,R4
+ 00000B48 D311 MOV.L L696+16,R3 ; _cantrans
+ 00000B4A 2FD6 MOV.L R13,@-R15
+ 00000B4C 2FC6 MOV.L R12,@-R15
+ 00000B4E 4F22 STS.L PR,@-R15
+ 00000B50 2340 MOV.B R4,@R3
+ Matris.c 468 ready = False;
+ 00000B52 D210 MOV.L L696+20,R2 ; _ready
+ Matris.c 469 if(pause == False)
+ 00000B54 D00D MOV.L L696+12,R0 ; _pause
+ 00000B56 2240 MOV.B R4,@R2
+ 00000B58 6100 MOV.B @R0,R1
+ 00000B5A 2118 TST R1,R1
+ 00000B5C 8B4B BF L618
+ Matris.c 470 {
+ Matris.c 471 receive();
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 36
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000B5E BCDE BSR _receive
+ 00000B60 0009 NOP
+ Matris.c 472 ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0;
+ 00000B62 E50A MOV #10,R5
+ 00000B64 D40C MOV.L L696+24,R4 ; _ypos
+ 00000B66 DE0D MOV.L L696+28,R14; _slowyposdown
+ 00000B68 D30D MOV.L L696+32,R3 ; __modls
+ 00000B6A 61E0 MOV.B @R14,R1
+ 00000B6C 430B JSR @R3
+ 00000B6E 6053 MOV R5,R0
+ 00000B70 2008 TST R0,R0
+ 00000B72 8903 BT L620
+ 00000B74 D202 MOV.L L696,R2 ; _nextdir
+ 00000B76 6020 MOV.B @R2,R0
+ 00000B78 881E CMP/EQ #30,R0
+ 00000B7A 8B13 BF L619
+ 00000B7C L620:
+ 00000B7C A013 BRA L621
+ 00000B7E E201 MOV #1,R2
+ 00000B80 L696:
+ 00000B80 <00000000> .DATA.L _nextdir
+ 00000B84 <00000000> .DATA.L _KeyDown
+ 00000B88 <00000000> .DATA.L _exit
+ 00000B8C <00000000> .DATA.L _pause
+ 00000B90 <00000000> .DATA.L _cantrans
+ 00000B94 <00000000> .DATA.L _ready
+ 00000B98 <00000000> .DATA.L _ypos
+ 00000B9C <00000000> .DATA.L _slowyposdown
+ 00000BA0 <00000000> .DATA.L __modls
+ 00000BA4 L619:
+ 00000BA4 E200 MOV #0,R2
+ 00000BA6 L621:
+ 00000BA6 6342 MOV.L @R4,R3
+ 00000BA8 332C ADD R2,R3
+ 00000BAA 2432 MOV.L R3,@R4
+ Matris.c 473 if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdow
+ +n % 10 == 0)
+ 00000BAC D235 MOV.L L697+6,R2 ; _nextdir
+ 00000BAE 6020 MOV.B @R2,R0
+ 00000BB0 88FF CMP/EQ #-1,R0
+ 00000BB2 8D0F BT/S L623
+ 00000BB4 6403 MOV R0,R4
+ 00000BB6 6043 MOV R4,R0
+ 00000BB8 8801 CMP/EQ #1,R0
+ 00000BBA 890B BT L623
+ 00000BBC 6043 MOV R4,R0
+ 00000BBE 881E CMP/EQ #30,R0
+ 00000BC0 8908 BT L623
+ 00000BC2 6043 MOV R4,R0
+ 00000BC4 8814 CMP/EQ #20,R0
+ 00000BC6 8905 BT L623
+ 00000BC8 61E0 MOV.B @R14,R1
+ 00000BCA D32F MOV.L L697+10,R3 ; __modls
+ 00000BCC 430B JSR @R3
+ 00000BCE 6053 MOV R5,R0
+ 00000BD0 2008 TST R0,R0
+ 00000BD2 8B0D BF L622
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 37
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000BD4 L623:
+ Matris.c 474 {
+ Matris.c 475 MoveBlock();
+ 00000BD4 BD69 BSR _MoveBlock
+ 00000BD6 0009 NOP
+ Matris.c 476 DrawBlock();
+ 00000BD8 D12C MOV.L L697+14,R1 ; _DrawBlock
+ 00000BDA 410B JSR @R1
+ 00000BDC 0009 NOP
+ Matris.c 477 if(cantrans == True)
+ 00000BDE D22C MOV.L L697+18,R2 ; _cantrans
+ 00000BE0 6020 MOV.B @R2,R0
+ 00000BE2 8801 CMP/EQ #1,R0
+ 00000BE4 8B04 BF L622
+ Matris.c 478 {
+ Matris.c 479 CheckPoints();
+ 00000BE6 BDB5 BSR _CheckPoints
+ 00000BE8 0009 NOP
+ Matris.c 480 DrawBlock();
+ 00000BEA D328 MOV.L L697+14,R3 ; _DrawBlock
+ 00000BEC 430B JSR @R3
+ 00000BEE 0009 NOP
+ 00000BF0 L622:
+ Matris.c 481 }
+ Matris.c 482 }
+ Matris.c 483 slowyposdown++;
+ 00000BF0 62E0 MOV.B @R14,R2
+ 00000BF2 7201 ADD #1,R2
+ 00000BF4 2E20 MOV.B R2,@R14
+ 00000BF6 L618:
+ Matris.c 484 }
+ Matris.c 485 ready = True;
+ 00000BF6 E301 MOV #1,R3
+ 00000BF8 D126 MOV.L L697+22,R1 ; _ready
+ Matris.c 486 drawNumber(pScreen, connected, 0, 62);
+ 00000BFA E73E MOV #62,R7
+ 00000BFC DC26 MOV.L L697+26,R12; _pScreen
+ 00000BFE E600 MOV #0,R6
+ 00000C00 DD26 MOV.L L697+30,R13; _connected
+ 00000C02 2130 MOV.B R3,@R1
+ 00000C04 DE26 MOV.L L697+34,R14; _drawNumber
+ 00000C06 65D0 MOV.B @R13,R5
+ 00000C08 4E0B JSR @R14
+ 00000C0A 64C2 MOV.L @R12,R4
+ Matris.c 487 drawNumber(pScreen + 1024, connected, 0, 62);
+ 00000C0C 65D0 MOV.B @R13,R5
+ 00000C0E E73E MOV #62,R7
+ 00000C10 9335 MOV.W L697,R3 ; H'0400
+ 00000C12 E600 MOV #0,R6
+ 00000C14 64C2 MOV.L @R12,R4
+ 00000C16 4E0B JSR @R14
+ 00000C18 343C ADD R3,R4
+ Matris.c 488 drawNumber(pScreen + 2048, connected, 0, 62);
+ 00000C1A E73E MOV #62,R7
+ 00000C1C 65D0 MOV.B @R13,R5
+ 00000C1E E600 MOV #0,R6
+ 00000C20 932E MOV.W L697+2,R3 ; H'0800
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 38
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000C22 64C2 MOV.L @R12,R4
+ 00000C24 4E0B JSR @R14
+ 00000C26 343C ADD R3,R4
+ Matris.c 489 }
+ 00000C28 4F26 LDS.L @R15+,PR
+ 00000C2A 6CF6 MOV.L @R15+,R12
+ 00000C2C 6DF6 MOV.L @R15+,R13
+ 00000C2E 000B RTS
+ 00000C30 6EF6 MOV.L @R15+,R14
+ Matris.c 490
+ Matris.c 491 void CallMain(void)
+ 00000C32 _CallMain: ; function: CallMain
+ ; frame size=12
+ 00000C32 2FE6 MOV.L R14,@-R15
+ 00000C34 2FD6 MOV.L R13,@-R15
+ 00000C36 4F22 STS.L PR,@-R15
+ Matris.c 492 {
+ Matris.c 493 ReadKey();
+ 00000C38 BF38 BSR _ReadKey
+ 00000C3A 0009 NOP
+ 00000C3C D619 MOV.L L697+38,R6 ; _onoff
+ 00000C3E DD11 MOV.L L697+6,R13 ; _nextdir
+ 00000C40 DE19 MOV.L L697+42,R14; _Timer_Install
+ 00000C42 D414 MOV.L L697+22,R4 ; _ready
+ 00000C44 60D0 MOV.B @R13,R0
+ 00000C46 881E CMP/EQ #30,R0
+ 00000C48 8F36 BF/S L625
+ 00000C4A 6503 MOV R0,R5
+ 00000C4C D215 MOV.L L697+38,R2 ; _onoff
+ 00000C4E 6320 MOV.B @R2,R3
+ 00000C50 2338 TST R3,R3
+ 00000C52 8B31 BF L625
+ 00000C54 L626:
+ Matris.c 494 if(nextdir == Fast && onoff == False)
+ Matris.c 495 {
+ Matris.c 496 while(ready == False);
+ 00000C54 6140 MOV.B @R4,R1
+ 00000C56 2118 TST R1,R1
+ 00000C58 89FC BT L626
+ Matris.c 497 onoff = True;
+ 00000C5A E201 MOV #1,R2
+ Matris.c 498 Timer_Uninstall(7);
+ 00000C5C D313 MOV.L L697+46,R3 ; _Timer_Uninstall
+ 00000C5E 2620 MOV.B R2,@R6
+ 00000C60 430B JSR @R3
+ 00000C62 E407 MOV #7,R4
+ Matris.c 499 Timer_Install(7, &Main, 50);
+ 00000C64 D512 MOV.L L697+50,R5 ; _Main
+ 00000C66 E632 MOV #50,R6
+ 00000C68 4E0B JSR @R14
+ 00000C6A E407 MOV #7,R4
+ Matris.c 500 Timer_Start(7);
+ 00000C6C D211 MOV.L L697+54,R2 ; _Timer_Start
+ 00000C6E 420B JSR @R2
+ 00000C70 E407 MOV #7,R4
+ Matris.c 501 if(nextdir == Down)
+ 00000C72 63D0 MOV.B @R13,R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 39
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000C74 2338 TST R3,R3
+ 00000C76 8B48 BF L629
+ Matris.c 502 {
+ Matris.c 503 nextdir = Fast;
+ 00000C78 E11E MOV #30,R1
+ 00000C7A A046 BRA L629
+ 00000C7C 2D10 MOV.B R1,@R13
+ 00000C7E L697:
+ 00000C7E 0400 .DATA.W H'0400
+ 00000C80 0800 .DATA.W H'0800
+ 00000C82 0000 .DATA.W 0
+ 00000C84 <00000000> .DATA.L _nextdir
+ 00000C88 <00000000> .DATA.L __modls
+ 00000C8C <00000000> .DATA.L _DrawBlock
+ 00000C90 <00000000> .DATA.L _cantrans
+ 00000C94 <00000000> .DATA.L _ready
+ 00000C98 <00000000> .DATA.L _pScreen
+ 00000C9C <00000000> .DATA.L _connected
+ 00000CA0 <00000000> .DATA.L _drawNumber
+ 00000CA4 <00000000> .DATA.L _onoff
+ 00000CA8 <00000000> .DATA.L _Timer_Install
+ 00000CAC <00000000> .DATA.L _Timer_Uninstall
+ 00000CB0 <00000000> .DATA.L _Main
+ 00000CB4 <00000000> .DATA.L _Timer_Start
+ 00000CB8 L625:
+ Matris.c 504 }
+ Matris.c 505 }
+ Matris.c 506 else
+ Matris.c 507 {
+ Matris.c 508 if(nextdir != Fast && onoff == True || levelchanged == True)
+ 00000CB8 6053 MOV R5,R0
+ 00000CBA 881E CMP/EQ #30,R0
+ 00000CBC 8903 BT L632
+ 00000CBE D31E MOV.L L698,R3 ; _onoff
+ 00000CC0 6030 MOV.B @R3,R0
+ 00000CC2 8801 CMP/EQ #1,R0
+ 00000CC4 8903 BT L633
+ 00000CC6 L632:
+ 00000CC6 D31D MOV.L L698+4,R3 ; _levelchanged
+ 00000CC8 6030 MOV.B @R3,R0
+ 00000CCA 8801 CMP/EQ #1,R0
+ 00000CCC 8B1D BF L629
+ 00000CCE L633:
+ Matris.c 509 {
+ Matris.c 510 while(ready == False);
+ 00000CCE 6240 MOV.B @R4,R2
+ 00000CD0 2228 TST R2,R2
+ 00000CD2 89FC BT L633
+ Matris.c 511 onoff = False;
+ Matris.c 512 Timer_Uninstall(7);
+ 00000CD4 D31A MOV.L L698+8,R3 ; _Timer_Uninstall
+ 00000CD6 E100 MOV #0,R1
+ 00000CD8 2610 MOV.B R1,@R6
+ 00000CDA 430B JSR @R3
+ 00000CDC E407 MOV #7,R4
+ Matris.c 513
+ Matris.c 514 if(level < 20)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 40
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000CDE E114 MOV #20,R1
+ 00000CE0 D318 MOV.L L698+12,R3 ; _level
+ 00000CE2 6230 MOV.B @R3,R2
+ 00000CE4 3213 CMP/GE R1,R2
+ 00000CE6 8906 BT L635
+ Matris.c 515 {
+ Matris.c 516 Timer_Install(7, &Main, 100 - level * 5);
+ 00000CE8 6030 MOV.B @R3,R0
+ 00000CEA E664 MOV #100,R6
+ 00000CEC 6203 MOV R0,R2
+ 00000CEE 4008 SHLL2 R0
+ 00000CF0 302C ADD R2,R0
+ 00000CF2 A001 BRA L684
+ 00000CF4 3608 SUB R0,R6
+ 00000CF6 L635:
+ Matris.c 517 }
+ Matris.c 518 else
+ Matris.c 519 {
+ Matris.c 520 Timer_Install(7, &Main, 0);
+ 00000CF6 E600 MOV #0,R6
+ 00000CF8 L684:
+ 00000CF8 D513 MOV.L L698+16,R5 ; _Main
+ 00000CFA 4E0B JSR @R14
+ 00000CFC E407 MOV #7,R4
+ Matris.c 521 }
+ Matris.c 522
+ Matris.c 523 Timer_Start(7);
+ 00000CFE D213 MOV.L L698+20,R2 ; _Timer_Start
+ 00000D00 420B JSR @R2
+ 00000D02 E407 MOV #7,R4
+ Matris.c 524 levelchanged = False;
+ 00000D04 D20D MOV.L L698+4,R2 ; _levelchanged
+ 00000D06 E300 MOV #0,R3
+ 00000D08 2230 MOV.B R3,@R2
+ 00000D0A L629:
+ Matris.c 525 }
+ Matris.c 526 }
+ Matris.c 527 }
+ 00000D0A 4F26 LDS.L @R15+,PR
+ 00000D0C 6DF6 MOV.L @R15+,R13
+ 00000D0E 000B RTS
+ 00000D10 6EF6 MOV.L @R15+,R14
+ Matris.c 528
+ Matris.c 529 //the code above is not good, CallMain handles the keys and sets the timer of Main
+ Matris.c 530
+ Matris.c 531 void ReadMenuKeys()
+ 00000D12 _ReadMenuKeys: ; function: ReadMenuKeys
+ ; frame size=4
+ 00000D12 4F22 STS.L PR,@-R15
+ Matris.c 532 {
+ Matris.c 533 if(KeyDown(31)) TeacherMode();
+ 00000D14 D30E MOV.L L698+24,R3 ; _KeyDown
+ 00000D16 430B JSR @R3
+ 00000D18 E41F MOV #31,R4
+ 00000D1A 2008 TST R0,R0
+ 00000D1C 8901 BT L637
+ 00000D1E BA25 BSR _TeacherMode
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 41
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000D20 0009 NOP
+ 00000D22 L637:
+ Matris.c 534 if(KeyDown(47)) quit = True;
+ 00000D22 D20B MOV.L L698+24,R2 ; _KeyDown
+ 00000D24 420B JSR @R2
+ 00000D26 E42F MOV #47,R4
+ 00000D28 2008 TST R0,R0
+ 00000D2A 8902 BT L638
+ 00000D2C D309 MOV.L L698+28,R3 ; _quit
+ 00000D2E E201 MOV #1,R2
+ 00000D30 2320 MOV.B R2,@R3
+ 00000D32 L638:
+ Matris.c 535 }
+ 00000D32 4F26 LDS.L @R15+,PR
+ 00000D34 000B RTS
+ 00000D36 0009 NOP
+ 00000D38 L698:
+ 00000D38 <00000000> .DATA.L _onoff
+ 00000D3C <00000000> .DATA.L _levelchanged
+ 00000D40 <00000000> .DATA.L _Timer_Uninstall
+ 00000D44 <00000000> .DATA.L _level
+ 00000D48 <00000000> .DATA.L _Main
+ 00000D4C <00000000> .DATA.L _Timer_Start
+ 00000D50 <00000000> .DATA.L _KeyDown
+ 00000D54 <00000000> .DATA.L _quit
+ Matris.c 536
+ Matris.c 537 int AddIn_main(int isAppli, unsigned short OptionNum)
+ 00000D58 _AddIn_main: ; function: AddIn_main
+ ; frame size=52
+ ; used runtime library name:
+ ; __modlu
+ 00000D58 2FE6 MOV.L R14,@-R15
+ 00000D5A 2FD6 MOV.L R13,@-R15
+ 00000D5C 2FC6 MOV.L R12,@-R15
+ Matris.c 538 {
+ Matris.c 539 char c[] = {0xE6, 0x9B, 0};
+ Matris.c 540 char mode = 0;
+ 00000D5E ED00 MOV #0,R13
+ Matris.c 541
+ Matris.c 542 level = 0;
+ Matris.c 543
+ Matris.c 544 pScreen = (char*)malloc(3072);
+ 00000D60 9473 MOV.W L699,R4 ; H'0C00
+ 00000D62 62D3 MOV R13,R2
+ 00000D64 2FB6 MOV.L R11,@-R15
+ 00000D66 2FA6 MOV.L R10,@-R15
+ 00000D68 2F96 MOV.L R9,@-R15
+ 00000D6A 2F86 MOV.L R8,@-R15
+ 00000D6C 4F22 STS.L PR,@-R15
+ 00000D6E 7FEC ADD #-20,R15
+ 00000D70 D137 MOV.L L699+6,R1 ; L462
+ 00000D72 63F3 MOV R15,R3
+ 00000D74 6010 MOV.B @R1,R0
+ 00000D76 7310 ADD #16,R3
+ 00000D78 2300 MOV.B R0,@R3
+ 00000D7A 8411 MOV.B @(1,R1),R0
+ 00000D7C 8031 MOV.B R0,@(1,R3)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 42
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000D7E 8412 MOV.B @(2,R1),R0
+ 00000D80 8032 MOV.B R0,@(2,R3)
+ 00000D82 D334 MOV.L L699+10,R3 ; _level
+ 00000D84 2320 MOV.B R2,@R3
+ 00000D86 D234 MOV.L L699+14,R2 ; _malloc
+ 00000D88 420B JSR @R2
+ 00000D8A 0009 NOP
+ 00000D8C D333 MOV.L L699+18,R3 ; _pScreen
+ Matris.c 545
+ Matris.c 546 nextblock = (kiss() % 7) + 1;
+ 00000D8E B960 BSR _kiss
+ 00000D90 2302 MOV.L R0,@R3
+ 00000D92 6103 MOV R0,R1
+ 00000D94 D332 MOV.L L699+22,R3 ; __modlu
+ 00000D96 430B JSR @R3
+ 00000D98 E007 MOV #7,R0
+ 00000D9A 7001 ADD #1,R0
+ 00000D9C D231 MOV.L L699+26,R2 ; _nextblock
+ Matris.c 547 CreateBlock();
+ 00000D9E BA0A BSR _CreateBlock
+ 00000DA0 2200 MOV.B R0,@R2
+ Matris.c 548
+ Matris.c 549 ready = True;
+ 00000DA2 E101 MOV #1,R1
+ 00000DA4 D330 MOV.L L699+30,R3 ; _ready
+ Matris.c 550
+ Matris.c 551 APP_EnableRestart();//thx to SimonLothar
+ 00000DA6 B92B BSR _APP_EnableRestart
+ 00000DA8 2310 MOV.B R1,@R3
+ Matris.c 552
+ Matris.c 553 seedkiss();//seed random numbers
+ 00000DAA B980 BSR _seedkiss
+ 00000DAC 0009 NOP
+ 00000DAE D22F MOV.L L699+34,R2 ; L467
+ 00000DB0 D32F MOV.L L699+38,R3 ; L468
+ 00000DB2 1F21 MOV.L R2,@(4,R15)
+ 00000DB4 1F33 MOV.L R3,@(12,R15)
+ 00000DB6 63F3 MOV R15,R3
+ Matris.c 554
+ Matris.c 555 while(mode != 3)
+ 00000DB8 D82F MOV.L L699+46,R8 ; _Timer_Install
+ 00000DBA 7310 ADD #16,R3
+ 00000DBC D92F MOV.L L699+50,R9 ; _exit
+ 00000DBE D22D MOV.L L699+42,R2 ; L469
+ 00000DC0 DB2F MOV.L L699+54,R11; _Print
+ 00000DC2 1F22 MOV.L R2,@(8,R15)
+ 00000DC4 2F32 MOV.L R3,@R15
+ 00000DC6 DC2F MOV.L L699+58,R12; _locate
+ 00000DC8 DE2F MOV.L L699+62,R14; _KeyDown
+ 00000DCA L640:
+ Matris.c 556 {
+ Matris.c 557 quit = False;
+ 00000DCA E300 MOV #0,R3
+ 00000DCC D22F MOV.L L699+66,R2 ; _quit
+ 00000DCE 2230 MOV.B R3,@R2
+ Matris.c 558 Timer_Install(10, &ReadMenuKeys, 200);
+ 00000DD0 963C MOV.W L699+2,R6 ; H'00C8
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 43
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000DD2 D52F MOV.L L699+70,R5 ; _ReadMenuKeys
+ 00000DD4 480B JSR @R8
+ 00000DD6 E40A MOV #10,R4
+ Matris.c 559 Timer_Start(10);
+ 00000DD8 D32E MOV.L L699+74,R3 ; _Timer_Start
+ 00000DDA 430B JSR @R3
+ 00000DDC E40A MOV #10,R4
+ Matris.c 560 while(!KeyDown(31) && mode != 3)
+ 00000DDE 4E0B JSR @R14
+ 00000DE0 E41F MOV #31,R4
+ 00000DE2 2008 TST R0,R0
+ 00000DE4 8901 BT L700
+ 00000DE6 A07E BRA L641
+ 00000DE8 0009 NOP
+ 00000DEA L700:
+ 00000DEA 60DE EXTS.B R13,R0
+ 00000DEC 8803 CMP/EQ #3,R0
+ 00000DEE 897A BT L641
+ 00000DF0 L642:
+ Matris.c 561 {
+ Matris.c 562 AllClr_VRAM();
+ 00000DF0 D229 MOV.L L699+78,R2 ; _AllClr_VRAM
+ 00000DF2 420B JSR @R2
+ 00000DF4 0009 NOP
+ Matris.c 563
+ Matris.c 564 locate( 6, 3 );
+ 00000DF6 E503 MOV #3,R5
+ 00000DF8 4C0B JSR @R12
+ 00000DFA E406 MOV #6,R4
+ Matris.c 565 Print(&"Singleplayer");
+ 00000DFC 4B0B JSR @R11
+ 00000DFE 54F1 MOV.L @(4,R15),R4
+ Matris.c 566 locate( 6, 4 );
+ 00000E00 E504 MOV #4,R5
+ 00000E02 4C0B JSR @R12
+ 00000E04 E406 MOV #6,R4
+ Matris.c 567 Print(&"Multiplayer");
+ 00000E06 4B0B JSR @R11
+ 00000E08 54F3 MOV.L @(12,R15),R4
+ Matris.c 568 locate( 2, 8);
+ 00000E0A E508 MOV #8,R5
+ 00000E0C 4C0B JSR @R12
+ 00000E0E E402 MOV #2,R4
+ Matris.c 569 Print(&"Copyright by Casimo");
+ 00000E10 4B0B JSR @R11
+ 00000E12 54F2 MOV.L @(8,R15),R4
+ Matris.c 570
+ Matris.c 571 locate( 4, 3 + mode);
+ 00000E14 65DE EXTS.B R13,R5
+ 00000E16 7503 ADD #3,R5
+ 00000E18 4C0B JSR @R12
+ 00000E1A E404 MOV #4,R4
+ Matris.c 572 PrintC(&c);
+ 00000E1C D31F MOV.L L699+82,R3 ; _PrintC
+ 00000E1E 430B JSR @R3
+ 00000E20 64F2 MOV.L @R15,R4
+ Matris.c 573
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 44
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 574 PutDisp_DD();
+ 00000E22 D21F MOV.L L699+86,R2 ; _PutDisp_DD
+ 00000E24 420B JSR @R2
+ 00000E26 0009 NOP
+ Matris.c 575
+ Matris.c 576 if(KeyDown(37))
+ 00000E28 4E0B JSR @R14
+ 00000E2A E425 MOV #37,R4
+ 00000E2C 2008 TST R0,R0
+ 00000E2E 8939 BT L643
+ Matris.c 577 {
+ Matris.c 578 mode += (mode == 1)? -1 : 1;
+ 00000E30 60DE EXTS.B R13,R0
+ 00000E32 8801 CMP/EQ #1,R0
+ 00000E34 8B01 BF L644
+ 00000E36 A001 BRA L645
+ 00000E38 E2FF MOV #-1,R2
+ 00000E3A L644:
+ 00000E3A E201 MOV #1,R2
+ 00000E3C L645:
+ 00000E3C 3D2C ADD R2,R13
+ Matris.c 579 while(KeyDown(37));
+ 00000E3E L646:
+ 00000E3E 4E0B JSR @R14
+ 00000E40 E425 MOV #37,R4
+ 00000E42 2008 TST R0,R0
+ 00000E44 8BFB BF L646
+ 00000E46 A047 BRA L648
+ 00000E48 0009 NOP
+ 00000E4A L699:
+ 00000E4A 0C00 .DATA.W H'0C00
+ 00000E4C 00C8 .DATA.W H'00C8
+ 00000E4E 0000 .DATA.W 0
+ 00000E50 <00000000> .DATA.L L462
+ 00000E54 <00000000> .DATA.L _level
+ 00000E58 <00000000> .DATA.L _malloc
+ 00000E5C <00000000> .DATA.L _pScreen
+ 00000E60 <00000000> .DATA.L __modlu
+ 00000E64 <00000000> .DATA.L _nextblock
+ 00000E68 <00000000> .DATA.L _ready
+ 00000E6C <00000000> .DATA.L L467
+ 00000E70 <00000000> .DATA.L L468
+ 00000E74 <00000000> .DATA.L L469
+ 00000E78 <00000000> .DATA.L _Timer_Install
+ 00000E7C <00000000> .DATA.L _exit
+ 00000E80 <00000000> .DATA.L _Print
+ 00000E84 <00000000> .DATA.L _locate
+ 00000E88 <00000000> .DATA.L _KeyDown
+ 00000E8C <00000000> .DATA.L _quit
+ 00000E90 <00000000> .DATA.L _ReadMenuKeys
+ 00000E94 <00000000> .DATA.L _Timer_Start
+ 00000E98 <00000000> .DATA.L _AllClr_VRAM
+ 00000E9C <00000000> .DATA.L _PrintC
+ 00000EA0 <00000000> .DATA.L _PutDisp_DD
+ 00000EA4 L643:
+ Matris.c 580 }
+ Matris.c 581 else
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 45
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 582 {
+ Matris.c 583 if(KeyDown(28))
+ 00000EA4 4E0B JSR @R14
+ 00000EA6 E41C MOV #28,R4
+ 00000EA8 2008 TST R0,R0
+ 00000EAA 890C BT L649
+ Matris.c 584 {
+ Matris.c 585 mode -= (mode == 0)? -1 : 1;
+ 00000EAC 62DE EXTS.B R13,R2
+ 00000EAE 2228 TST R2,R2
+ 00000EB0 8B01 BF L650
+ 00000EB2 A001 BRA L651
+ 00000EB4 E3FF MOV #-1,R3
+ 00000EB6 L650:
+ 00000EB6 E301 MOV #1,R3
+ 00000EB8 L651:
+ 00000EB8 3D38 SUB R3,R13
+ Matris.c 586 while(KeyDown(28));
+ 00000EBA L652:
+ 00000EBA 4E0B JSR @R14
+ 00000EBC E41C MOV #28,R4
+ 00000EBE 2008 TST R0,R0
+ 00000EC0 8BFB BF L652
+ 00000EC2 A009 BRA L648
+ 00000EC4 0009 NOP
+ 00000EC6 L649:
+ Matris.c 587 }
+ Matris.c 588 else
+ Matris.c 589 {
+ Matris.c 590 if(KeyDown(47))
+ 00000EC6 4E0B JSR @R14
+ 00000EC8 E42F MOV #47,R4
+ 00000ECA 2008 TST R0,R0
+ 00000ECC 8904 BT L648
+ Matris.c 591 {
+ Matris.c 592 mode = 3;
+ 00000ECE ED03 MOV #3,R13
+ Matris.c 593 while(KeyDown(47));
+ 00000ED0 L656:
+ 00000ED0 4E0B JSR @R14
+ 00000ED2 E42F MOV #47,R4
+ 00000ED4 2008 TST R0,R0
+ 00000ED6 8BFB BF L656
+ 00000ED8 L648:
+ 00000ED8 4E0B JSR @R14
+ 00000EDA E41F MOV #31,R4
+ 00000EDC 2008 TST R0,R0
+ 00000EDE 8B02 BF L641
+ 00000EE0 60DE EXTS.B R13,R0
+ 00000EE2 8803 CMP/EQ #3,R0
+ 00000EE4 8B84 BF L642
+ 00000EE6 L641:
+ Matris.c 594 }
+ Matris.c 595 }
+ Matris.c 596
+ Matris.c 597 }
+ Matris.c 598 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 46
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 599
+ Matris.c 600 Timer_Uninstall(10);
+ 00000EE6 D222 MOV.L L701+4,R2 ; _Timer_Uninstall
+ 00000EE8 420B JSR @R2
+ 00000EEA E40A MOV #10,R4
+ 00000EEC 6ADE EXTS.B R13,R10
+ 00000EEE 60A3 MOV R10,R0
+ 00000EF0 8803 CMP/EQ #3,R0
+ 00000EF2 8920 BT L659
+ Matris.c 601
+ Matris.c 602 if(mode != 3)
+ Matris.c 603 {
+ Matris.c 604 if(mode == 1)
+ 00000EF4 60A3 MOV R10,R0
+ 00000EF6 8801 CMP/EQ #1,R0
+ 00000EF8 8B04 BF L660
+ Matris.c 605 {
+ Matris.c 606 Serial_ClearReceiveBuffer();
+ 00000EFA D31E MOV.L L701+8,R3 ; _Serial_ClearReceiveBuffer
+ 00000EFC 430B JSR @R3
+ 00000EFE 0009 NOP
+ Matris.c 607 Connect();
+ 00000F00 BB28 BSR _Connect
+ 00000F02 0009 NOP
+ 00000F04 L660:
+ Matris.c 608 }
+ Matris.c 609
+ Matris.c 610 Timer_Install(6,&CallMain, 150);
+ 00000F04 9632 MOV.W L701,R6 ; H'0096
+ 00000F06 D51C MOV.L L701+12,R5 ; _CallMain
+ 00000F08 480B JSR @R8
+ 00000F0A E406 MOV #6,R4
+ Matris.c 611 Timer_Start(6);
+ 00000F0C D31B MOV.L L701+16,R3 ; _Timer_Start
+ 00000F0E 430B JSR @R3
+ 00000F10 E406 MOV #6,R4
+ Matris.c 612
+ Matris.c 613 while(exit == False){RestGray();}
+ 00000F12 6290 MOV.B @R9,R2
+ 00000F14 2228 TST R2,R2
+ 00000F16 8B04 BF L661
+ 00000F18 L662:
+ 00000F18 B910 BSR _RestGray
+ 00000F1A 0009 NOP
+ 00000F1C 6390 MOV.B @R9,R3
+ 00000F1E 2338 TST R3,R3
+ 00000F20 89FA BT L662
+ 00000F22 L661:
+ Matris.c 614
+ Matris.c 615 ResetValues();
+ 00000F22 B997 BSR _ResetValues
+ 00000F24 0009 NOP
+ Matris.c 616
+ Matris.c 617 while(KeyDown(47));
+ 00000F26 L663:
+ 00000F26 4E0B JSR @R14
+ 00000F28 E42F MOV #47,R4
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 47
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000F2A 2008 TST R0,R0
+ 00000F2C 8BFB BF L663
+ 00000F2E L665:
+ Matris.c 618 while(KeyDown(31));
+ 00000F2E 4E0B JSR @R14
+ 00000F30 E41F MOV #31,R4
+ 00000F32 2008 TST R0,R0
+ 00000F34 8BFB BF L665
+ 00000F36 L659:
+ 00000F36 60A3 MOV R10,R0
+ 00000F38 8803 CMP/EQ #3,R0
+ 00000F3A 8901 BT L702
+ 00000F3C AF45 BRA L640
+ 00000F3E 0009 NOP
+ 00000F40 L702:
+ Matris.c 619 }
+ Matris.c 620 }
+ Matris.c 621 Timer_Uninstall(6);
+ 00000F40 D30B MOV.L L701+4,R3 ; _Timer_Uninstall
+ 00000F42 430B JSR @R3
+ 00000F44 E406 MOV #6,R4
+ Matris.c 622 Timer_Uninstall(7);
+ 00000F46 D20A MOV.L L701+4,R2 ; _Timer_Uninstall
+ 00000F48 420B JSR @R2
+ 00000F4A E407 MOV #7,R4
+ Matris.c 623 Disconnect();
+ 00000F4C B905 BSR _Disconnect
+ 00000F4E 0009 NOP
+ Matris.c 624 free(pScreen);
+ 00000F50 D20B MOV.L L701+20,R2 ; _pScreen
+ 00000F52 D30C MOV.L L701+24,R3 ; _free
+ 00000F54 430B JSR @R3
+ 00000F56 6422 MOV.L @R2,R4
+ Matris.c 625 }
+ 00000F58 7F14 ADD #20,R15
+ 00000F5A 4F26 LDS.L @R15+,PR
+ 00000F5C 68F6 MOV.L @R15+,R8
+ 00000F5E 69F6 MOV.L @R15+,R9
+ 00000F60 6AF6 MOV.L @R15+,R10
+ 00000F62 6BF6 MOV.L @R15+,R11
+ 00000F64 6CF6 MOV.L @R15+,R12
+ 00000F66 6DF6 MOV.L @R15+,R13
+ 00000F68 000B RTS
+ 00000F6A 6EF6 MOV.L @R15+,R14
+ 00000F6C L701:
+ 00000F6C 0096 .DATA.W H'0096
+ 00000F6E 0000 .DATA.W 0
+ 00000F70 <00000000> .DATA.L _Timer_Uninstall
+ 00000F74 <00000000> .DATA.L _Serial_ClearReceiveBuffer
+ 00000F78 <00000000> .DATA.L _CallMain
+ 00000F7C <00000000> .DATA.L _Timer_Start
+ 00000F80 <00000000> .DATA.L _pScreen
+ 00000F84 <00000000> .DATA.L _free
+ Matris.c 626
+ Matris.c 627 //I'm sure there are unused variables
+ Matris.c 628
+ Matris.c 629 #pragma section _BR_Size
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 48
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ Matris.c 630 unsigned long BR_Size;
+ Matris.c 631 #pragma section
+ Matris.c 632 #pragma section _TOP
+ Matris.c 633 int InitializeSystem(int isAppli, unsigned short OptionNum)
+P_T 00000000 _InitializeSystem: ; function: InitializeSystem
+ ; frame size=4
+ Matris.c 634 {return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
+ 00000000 D303 MOV.L L703+2,R3 ; _INIT_ADDIN_APPLICATION
+ 00000002 7FFC ADD #-4,R15
+ 00000004 2F51 MOV.W R5,@R15
+ 00000006 65F1 MOV.W @R15,R5
+ 00000008 655D EXTU.W R5,R5
+ 0000000A 432B JMP @R3
+ 0000000C 7F04 ADD #4,R15
+ 0000000E L703:
+ 0000000E 0000 .DATA.W 0
+ 00000010 <00000000> .DATA.L _INIT_ADDIN_APPLICATION
+ Matris.c 635 #pragma section
+D 00000000 __$seed: ; static: seed
+ 00000000 075BCD15 .DATA.L H'075BCD15
+ 00000004 __$y$306: ; static: y
+ 00000004 159A55A0 .DATA.L H'159A55A0
+ 00000008 __$z$307: ; static: z
+ 00000008 1F123BB5 .DATA.L H'1F123BB5
+ 0000000C __$c$308: ; static: c
+ 0000000C 0074CBB1 .DATA.L H'0074CBB1
+ 00000010 _pause: ; static: pause
+ 00000010 00 .DATA.B H'00
+ 00000011 _quit: ; static: quit
+ 00000011 00 .DATA.B H'00
+ 00000012 _levelchanged: ; static: levelchanged
+ 00000012 00 .DATA.B H'00
+ 00000013 _exit: ; static: exit
+ 00000013 00 .DATA.B H'00
+ 00000014 _onoff: ; static: onoff
+ 00000014 01 .DATA.B H'01
+ 00000015 _slowyposdown: ; static: slowyposdown
+ 00000015 00 .DATA.B H'00
+ 00000016 _receiveline: ; static: receiveline
+ 00000016 00 .DATA.B H'00
+ 00000017 _sendline: ; static: sendline
+ 00000017 00 .DATA.B H'00
+ 00000018 _cantrans: ; static: cantrans
+ 00000018 00 .DATA.B H'00
+C 00000000 L367:
+ 00000000 506F696E74 .SDATA "Points: %d"
+ 733A202564
+ 0000000A 00 .DATA.B H'00
+ 0000000B 00000001 .RES.B 1
+ 0000000C L368:
+ 0000000C 4C6576656C .SDATA "Level: %d"
+ 3A202564
+ 00000015 00 .DATA.B H'00
+ 00000016 00000002 .RES.W 1
+ 00000018 L395:
+ 00000018 436F6E6E65 .SDATA "Connecting..."
+ 6374696E67
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 49
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 2E2E2E
+ 00000025 00 .DATA.B H'00
+ 00000026 L462:
+ 00000026 E69B00 .DATA.B H'E6,H'9B,H'00
+ 00000029 00000001 .RES.B 1
+ 0000002A 00000002 .RES.W 1
+ 0000002C L467:
+ 0000002C 53696E676C .SDATA "Singleplayer"
+ 65706C6179
+ 6572
+ 00000038 00 .DATA.B H'00
+ 00000039 00000001 .RES.B 1
+ 0000003A 00000002 .RES.W 1
+ 0000003C L468:
+ 0000003C 4D756C7469 .SDATA "Multiplayer"
+ 706C617965
+ 72
+ 00000047 00 .DATA.B H'00
+ 00000048 L469:
+ 00000048 436F707972 .SDATA "Copyright by Casimo"
+ 6967687420
+ 6279204361
+ 73696D6F
+ 0000005B 00 .DATA.B H'00
+B 00000000 _swit: ; static: swit
+ 00000000 00000001 .RES.B 1
+ 00000001 _ready: ; static: ready
+ 00000001 00000001 .RES.B 1
+ 00000002 _canswap: ; static: canswap
+ 00000002 00000001 .RES.B 1
+ 00000003 _connected: ; static: connected
+ 00000003 00000001 .RES.B 1
+B_B 00000000 _BR_Size: ; static: BR_Size
+ 00000000 00000004 .RES.L 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:11 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 0
+NUMBER OF WARNINGS: 9
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 635
+
+
+
+******* SECTION SIZE INFORMATION *******
+
+PROGRAM SECTION (P): 00000F88 Byte(s)
+PROGRAM SECTION (P_BR_Size): 00000000 Byte(s)
+PROGRAM SECTION (P_TOP): 00000014 Byte(s)
+CONSTANT SECTION (C): 0000005C Byte(s)
+CONSTANT SECTION (C_BR_Size): 00000000 Byte(s)
+CONSTANT SECTION (C_TOP): 00000000 Byte(s)
+DATA SECTION (D): 00000019 Byte(s)
+DATA SECTION (D_BR_Size): 00000000 Byte(s)
+DATA SECTION (D_TOP): 00000000 Byte(s)
+BSS SECTION (B): 00000004 Byte(s)
+BSS SECTION (B_BR_Size): 00000004 Byte(s)
+BSS SECTION (B_TOP): 00000000 Byte(s)
+
+ TOTAL PROGRAM SIZE: 00001019 Byte(s)
+
+
+
+********** LABEL INFORMATION ***********
+
+NUMBER OF EXTERNAL REFERENCE SYMBOLS: 48
+NUMBER OF EXTERNAL DEFINITION SYMBOLS: 38
+NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 243
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk43B4.tmp
+
diff --git a/Debug/Matris.obj b/Debug/Matris.obj Binary files differnew file mode 100644 index 0000000..91ee4c2 --- /dev/null +++ b/Debug/Matris.obj diff --git a/Debug/SYSCALLS.obj b/Debug/SYSCALLS.obj Binary files differnew file mode 100644 index 0000000..b870bd9 --- /dev/null +++ b/Debug/SYSCALLS.obj diff --git a/Debug/draw.lst b/Debug/draw.lst new file mode 100644 index 0000000..c19d0ba --- /dev/null +++ b/Debug/draw.lst @@ -0,0 +1,5879 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 1
+
+************ OBJECT LISTING ************
+
+FILE NAME: G:\Casio SDK\Projekte\Matris\draw.c
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 1 #include "sprites.h"
+ draw.c 2 #include "global.h"
+ draw.c 3
+ draw.c 4 //also from ML, a bit modified
+ draw.c 5
+ draw.c 6 void pixel(char *buffer, int x, int y, int type)
+P 00000000 _pixel: ; function: pixel
+ ; frame size=8
+ 00000000 2FE6 MOV.L R14,@-R15
+ draw.c 7 {
+ draw.c 8 if(x&~127 || y&~63) return;
+ 00000002 E380 MOV #-128,R3
+ 00000004 2FD6 MOV.L R13,@-R15
+ 00000006 2358 TST R5,R3
+ 00000008 8B2E BF L503
+ 0000000A E1C0 MOV #-64,R1
+ 0000000C 2168 TST R6,R1
+ 0000000E 8B2B BF L503
+ 00000010 9D84 MOV.W L762,R13 ; H'0080
+ 00000012 6073 MOV R7,R0
+ 00000014 4608 SHLL2 R6
+ 00000016 4608 SHLL2 R6
+ 00000018 6E53 MOV R5,R14
+ 0000001A 4E21 SHAR R14
+ 0000001C 4E21 SHAR R14
+ 0000001E 4E21 SHAR R14
+ 00000020 3E6C ADD R6,R14
+ 00000022 3E4C ADD R4,R14
+ 00000024 E207 MOV #7,R2
+ 00000026 2259 AND R5,R2
+ 00000028 622B NEG R2,R2
+ 0000002A 8800 CMP/EQ #0,R0
+ 0000002C 8D04 BT/S L469
+ 0000002E 4D2C SHAD R2,R13
+ 00000030 8801 CMP/EQ #1,R0
+ 00000032 890E BT L470
+ 00000034 A018 BRA L503
+ 00000036 0009 NOP
+ 00000038 L469: ; case label
+ draw.c 9 switch (type)
+ draw.c 10 {
+ draw.c 11 case 0:
+ draw.c 12 (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 00000038 63E0 MOV.B @R14,R3
+ 0000003A 64D7 NOT R13,R4
+ draw.c 13 (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 0000003C 906F MOV.W L762+2,R0 ; H'0400
+ 0000003E 2349 AND R4,R3
+ 00000040 2E30 MOV.B R3,@R14
+ 00000042 02EC MOV.B @(R0,R14),R2
+ 00000044 2249 AND R4,R2
+ 00000046 0E24 MOV.B R2,@(R0,R14)
+ draw.c 14 (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 00000048 906A MOV.W L762+4,R0 ; H'0800
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 2
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000004A 03EC MOV.B @(R0,R14),R3
+ 0000004C 2349 AND R4,R3
+ draw.c 15 break;
+ 0000004E A00B BRA L503
+ 00000050 0E34 MOV.B R3,@(R0,R14)
+ 00000052 L470: ; case label
+ draw.c 16 case 1:
+ draw.c 17 (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 00000052 9065 MOV.W L762+4,R0 ; H'0800
+ 00000054 03EC MOV.B @(R0,R14),R3
+ 00000056 23DB OR R13,R3
+ 00000058 0E34 MOV.B R3,@(R0,R14)
+ draw.c 18 (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 0000005A 9060 MOV.W L762+2,R0 ; H'0400
+ 0000005C 02EC MOV.B @(R0,R14),R2
+ 0000005E 22DB OR R13,R2
+ 00000060 0E24 MOV.B R2,@(R0,R14)
+ draw.c 19 (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 00000062 63E0 MOV.B @R14,R3
+ 00000064 23DB OR R13,R3
+ 00000066 2E30 MOV.B R3,@R14
+ draw.c 20 break;
+ draw.c 21 }
+ draw.c 22 }
+ 00000068 L503:
+ 00000068 6DF6 MOV.L @R15+,R13
+ 0000006A 000B RTS
+ 0000006C 6EF6 MOV.L @R15+,R14
+ draw.c 23
+ draw.c 24 void pixelgray(char *buffer, int x,int y, int type)
+ 0000006E _pixelgray: ; function: pixelgray
+ ; frame size=8
+ 0000006E 4608 SHLL2 R6
+ 00000070 2FE6 MOV.L R14,@-R15
+ 00000072 E207 MOV #7,R2
+ 00000074 2FD6 MOV.L R13,@-R15
+ 00000076 4608 SHLL2 R6
+ 00000078 9D50 MOV.W L762,R13 ; H'0080
+ 0000007A 6073 MOV R7,R0
+ 0000007C 6E53 MOV R5,R14
+ 0000007E 4E21 SHAR R14
+ 00000080 4E21 SHAR R14
+ 00000082 4E21 SHAR R14
+ 00000084 3E6C ADD R6,R14
+ 00000086 3E4C ADD R4,R14
+ 00000088 2259 AND R5,R2
+ 0000008A 622B NEG R2,R2
+ 0000008C 8800 CMP/EQ #0,R0
+ 0000008E 8D08 BT/S L471
+ 00000090 4D2C SHAD R2,R13
+ 00000092 8803 CMP/EQ #3,R0
+ 00000094 8912 BT L472
+ 00000096 8802 CMP/EQ #2,R0
+ 00000098 8914 BT L473
+ 0000009A 8801 CMP/EQ #1,R0
+ 0000009C 8916 BT L474
+ 0000009E A018 BRA L505
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 3
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000000A0 0009 NOP
+ 000000A2 L471: ; case label
+ draw.c 25 {
+ draw.c 26 switch (type)
+ draw.c 27 {
+ draw.c 28 case 0:
+ draw.c 29 (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 000000A2 64D7 NOT R13,R4
+ 000000A4 63E0 MOV.B @R14,R3
+ 000000A6 2349 AND R4,R3
+ 000000A8 2E30 MOV.B R3,@R14
+ draw.c 30 (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 000000AA 9038 MOV.W L762+2,R0 ; H'0400
+ 000000AC 02EC MOV.B @(R0,R14),R2
+ 000000AE 2249 AND R4,R2
+ 000000B0 0E24 MOV.B R2,@(R0,R14)
+ draw.c 31 (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ 000000B2 9035 MOV.W L762+4,R0 ; H'0800
+ 000000B4 03EC MOV.B @(R0,R14),R3
+ 000000B6 2349 AND R4,R3
+ draw.c 32 break;
+ 000000B8 A00B BRA L505
+ 000000BA 0E34 MOV.B R3,@(R0,R14)
+ 000000BC L472: ; case label
+ draw.c 33 case 3:
+ draw.c 34 (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 000000BC 9030 MOV.W L762+4,R0 ; H'0800
+ 000000BE 03EC MOV.B @(R0,R14),R3
+ 000000C0 23DB OR R13,R3
+ 000000C2 0E34 MOV.B R3,@(R0,R14)
+ draw.c 35 case 2:
+ 000000C4 L473: ; case label
+ draw.c 36 (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 000000C4 902B MOV.W L762+2,R0 ; H'0400
+ 000000C6 02EC MOV.B @(R0,R14),R2
+ 000000C8 22DB OR R13,R2
+ 000000CA 0E24 MOV.B R2,@(R0,R14)
+ draw.c 37 case 1:
+ 000000CC L474: ; case label
+ draw.c 38 (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ 000000CC 63E0 MOV.B @R14,R3
+ 000000CE 23DB OR R13,R3
+ 000000D0 2E30 MOV.B R3,@R14
+ draw.c 39 break;
+ 000000D2 L505:
+ draw.c 40 }
+ draw.c 41 }
+ 000000D2 6DF6 MOV.L @R15+,R13
+ 000000D4 000B RTS
+ 000000D6 6EF6 MOV.L @R15+,R14
+ draw.c 42
+ draw.c 43 #define Abs(x) ((x < 0)? -x : x)
+ draw.c 44 #define sgn(x) (x == 0)?0:(x > 0)?1:-1
+ draw.c 45
+ draw.c 46 void line(char *buffer, int x1, int y1, int x2, int y2, int color)
+ 000000D8 _line: ; function: line
+ ; frame size=44
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 4
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000000D8 2FE6 MOV.L R14,@-R15
+ draw.c 47 {
+ draw.c 48 int i, x, y, dx, dy, sx, sy, cumul;
+ draw.c 49
+ draw.c 50 y1 = y1 + 7;
+ 000000DA 7607 ADD #7,R6
+ 000000DC 2FD6 MOV.L R13,@-R15
+ 000000DE 2FC6 MOV.L R12,@-R15
+ 000000E0 2FB6 MOV.L R11,@-R15
+ draw.c 51 y2 = y2 + 7;
+ draw.c 52
+ draw.c 53 x = x1;
+ draw.c 54 y = y1;
+ 000000E2 6C63 MOV R6,R12
+ 000000E4 2FA6 MOV.L R10,@-R15
+ 000000E6 6B53 MOV R5,R11
+ 000000E8 2F96 MOV.L R9,@-R15
+ 000000EA 2F86 MOV.L R8,@-R15
+ 000000EC 4F22 STS.L PR,@-R15
+ 000000EE 6843 MOV R4,R8
+ 000000F0 7FF4 ADD #-12,R15
+ draw.c 55 dx = x2 - x1;
+ 000000F2 6473 MOV R7,R4
+ 000000F4 5EFB MOV.L @(44,R15),R14
+ 000000F6 3458 SUB R5,R4
+ 000000F8 59FC MOV.L @(48,R15),R9
+ 000000FA 7E07 ADD #7,R14
+ draw.c 56 dy = y2 - y1;
+ 000000FC 65E3 MOV R14,R5
+ draw.c 57 sx = sgn(dx);
+ 000000FE 2448 TST R4,R4
+ 00000100 8F02 BF/S L506
+ 00000102 3568 SUB R6,R5
+ 00000104 A005 BRA L508
+ 00000106 E300 MOV #0,R3
+ 00000108 L506:
+ 00000108 4415 CMP/PL R4
+ 0000010A 8B01 BF L507
+ 0000010C A001 BRA L508
+ 0000010E E301 MOV #1,R3
+ 00000110 L507:
+ 00000110 E3FF MOV #-1,R3
+ 00000112 L508:
+ draw.c 58 sy = sgn(dy);
+ 00000112 2558 TST R5,R5
+ 00000114 8F05 BF/S L510
+ 00000116 1F32 MOV.L R3,@(8,R15)
+ 00000118 A008 BRA L512
+ 0000011A E200 MOV #0,R2
+ 0000011C L762:
+ 0000011C 0080 .DATA.W H'0080
+ 0000011E 0400 .DATA.W H'0400
+ 00000120 0800 .DATA.W H'0800
+ 00000122 L510:
+ 00000122 4515 CMP/PL R5
+ 00000124 8B01 BF L511
+ 00000126 A001 BRA L512
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 5
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000128 E201 MOV #1,R2
+ 0000012A L511:
+ 0000012A E2FF MOV #-1,R2
+ 0000012C L512:
+ draw.c 59 dx = Abs(dx);
+ 0000012C 4411 CMP/PZ R4
+ 0000012E 8D02 BT/S L514
+ 00000130 1F21 MOV.L R2,@(4,R15)
+ 00000132 A001 BRA L515
+ 00000134 6D4B NEG R4,R13
+ 00000136 L514:
+ 00000136 6D43 MOV R4,R13
+ 00000138 L515:
+ draw.c 60 dy = Abs(dy);
+ 00000138 4511 CMP/PZ R5
+ 0000013A 8D02 BT/S L516
+ draw.c 61 pixel(buffer, x, y, color);
+ 0000013C 6793 MOV R9,R7
+ 0000013E A001 BRA L517
+ 00000140 6E5B NEG R5,R14
+ 00000142 L516:
+ 00000142 6E53 MOV R5,R14
+ 00000144 L517:
+ 00000144 66C3 MOV R12,R6
+ 00000146 65B3 MOV R11,R5
+ 00000148 BF5A BSR _pixel
+ 0000014A 6483 MOV R8,R4
+ draw.c 62 if(dx > dy)
+ 0000014C 3DE7 CMP/GT R14,R13
+ 0000014E 8F1D BF/S L518
+ 00000150 E401 MOV #1,R4
+ draw.c 63 {
+ draw.c 64 cumul = dx / 2;
+ 00000152 6AD3 MOV R13,R10
+ 00000154 E300 MOV #0,R3
+ 00000156 33A7 CMP/GT R10,R3
+ 00000158 3A3E ADDC R3,R10
+ 0000015A 4A21 SHAR R10
+ draw.c 65 for(i=1 ; i<dx ; i++)
+ 0000015C 6343 MOV R4,R3
+ 0000015E 33D3 CMP/GE R13,R3
+ 00000160 8D2F BT/S L522
+ 00000162 2F42 MOV.L R4,@R15
+ 00000164 L520:
+ draw.c 66 {
+ draw.c 67 x += sx;
+ 00000164 51F2 MOV.L @(8,R15),R1
+ draw.c 68 cumul += dy;
+ 00000166 3AEC ADD R14,R10
+ draw.c 69 if(cumul > dx)
+ 00000168 3AD7 CMP/GT R13,R10
+ 0000016A 8F03 BF/S L521
+ 0000016C 3B1C ADD R1,R11
+ draw.c 70 {
+ draw.c 71 cumul -= dx;
+ 0000016E 3AD8 SUB R13,R10
+ draw.c 72 y += sy;
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 6
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000170 52F1 MOV.L @(4,R15),R2
+ 00000172 3C2C ADD R2,R12
+ 00000174 L521:
+ draw.c 73 }
+ draw.c 74 pixel(buffer, x, y, color);
+ 00000174 6793 MOV R9,R7
+ 00000176 66C3 MOV R12,R6
+ 00000178 65B3 MOV R11,R5
+ 0000017A BF41 BSR _pixel
+ 0000017C 6483 MOV R8,R4
+ 0000017E 62F2 MOV.L @R15,R2
+ 00000180 7201 ADD #1,R2
+ 00000182 32D3 CMP/GE R13,R2
+ 00000184 8FEE BF/S L520
+ 00000186 2F22 MOV.L R2,@R15
+ 00000188 A01B BRA L522
+ 0000018A 0009 NOP
+ 0000018C L518:
+ draw.c 75 }
+ draw.c 76 }
+ draw.c 77 else
+ draw.c 78 {
+ draw.c 79 cumul = dy / 2;
+ 0000018C 6AE3 MOV R14,R10
+ 0000018E E300 MOV #0,R3
+ 00000190 33A7 CMP/GT R10,R3
+ 00000192 3A3E ADDC R3,R10
+ 00000194 4A21 SHAR R10
+ draw.c 80 for(i=1 ; i<dy ; i++)
+ 00000196 6343 MOV R4,R3
+ 00000198 33E3 CMP/GE R14,R3
+ 0000019A 8D12 BT/S L522
+ 0000019C 2F42 MOV.L R4,@R15
+ 0000019E L524:
+ draw.c 81 {
+ draw.c 82 y += sy;
+ draw.c 83 cumul += dx;
+ 0000019E 3ADC ADD R13,R10
+ 000001A0 51F1 MOV.L @(4,R15),R1
+ draw.c 84 if(cumul > dy)
+ 000001A2 3AE7 CMP/GT R14,R10
+ 000001A4 8F03 BF/S L525
+ 000001A6 3C1C ADD R1,R12
+ draw.c 85 {
+ draw.c 86 cumul -= dy;
+ draw.c 87 x += sx;
+ 000001A8 52F2 MOV.L @(8,R15),R2
+ 000001AA 3AE8 SUB R14,R10
+ 000001AC 3B2C ADD R2,R11
+ 000001AE L525:
+ draw.c 88 }
+ draw.c 89 pixel(buffer, x, y, color);
+ 000001AE 6793 MOV R9,R7
+ 000001B0 66C3 MOV R12,R6
+ 000001B2 65B3 MOV R11,R5
+ 000001B4 BF24 BSR _pixel
+ 000001B6 6483 MOV R8,R4
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 7
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000001B8 62F2 MOV.L @R15,R2
+ 000001BA 7201 ADD #1,R2
+ 000001BC 32E3 CMP/GE R14,R2
+ 000001BE 8FEE BF/S L524
+ 000001C0 2F22 MOV.L R2,@R15
+ 000001C2 L522:
+ draw.c 90 }
+ draw.c 91 }
+ draw.c 92 }
+ 000001C2 7F0C ADD #12,R15
+ 000001C4 4F26 LDS.L @R15+,PR
+ 000001C6 68F6 MOV.L @R15+,R8
+ 000001C8 69F6 MOV.L @R15+,R9
+ 000001CA 6AF6 MOV.L @R15+,R10
+ 000001CC 6BF6 MOV.L @R15+,R11
+ 000001CE 6CF6 MOV.L @R15+,R12
+ 000001D0 6DF6 MOV.L @R15+,R13
+ 000001D2 000B RTS
+ 000001D4 6EF6 MOV.L @R15+,R14
+ draw.c 93 //end of ML stuff
+ draw.c 94
+ draw.c 95 void drawChar(char *buffer, char charact, int posx, int posy)
+ 000001D6 _drawChar: ; function: drawChar
+ ; frame size=48
+ 000001D6 655E EXTS.B R5,R5
+ 000001D8 D273 MOV.L L763+2,R2 ; _character
+ 000001DA E33C MOV #60,R3
+ 000001DC 2FE6 MOV.L R14,@-R15
+ 000001DE 75BF ADD #-65,R5
+ 000001E0 2FD6 MOV.L R13,@-R15
+ 000001E2 2FC6 MOV.L R12,@-R15
+ 000001E4 2FB6 MOV.L R11,@-R15
+ 000001E6 2FA6 MOV.L R10,@-R15
+ 000001E8 2F96 MOV.L R9,@-R15
+ 000001EA 6943 MOV R4,R9
+ 000001EC 2F86 MOV.L R8,@-R15
+ draw.c 96 {
+ draw.c 97 int xcount, ycount;
+ draw.c 98
+ draw.c 99 for(xcount = 0; xcount < 5; xcount ++)
+ 000001EE E800 MOV #0,R8
+ 000001F0 4F22 STS.L PR,@-R15
+ 000001F2 6A83 MOV R8,R10
+ 000001F4 4F12 STS.L MACL,@-R15
+ 000001F6 7FF4 ADD #-12,R15
+ 000001F8 0537 MUL.L R3,R5
+ 000001FA 1F61 MOV.L R6,@(4,R15)
+ 000001FC 2F72 MOV.L R7,@R15
+ 000001FE 051A STS MACL,R5
+ 00000200 325C ADD R5,R2
+ 00000202 1F22 MOV.L R2,@(8,R15)
+ 00000204 L526:
+ 00000204 6EF2 MOV.L @R15,R14
+ 00000206 6DA3 MOV R10,R13
+ 00000208 52F2 MOV.L @(8,R15),R2
+ draw.c 100 {
+ draw.c 101 for(ycount = 0; ycount < 3; ycount ++)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 8
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000020A 6C83 MOV R8,R12
+ 0000020C 5BF1 MOV.L @(4,R15),R11
+ 0000020E 63A3 MOV R10,R3
+ 00000210 4D00 SHLL R13
+ 00000212 3D3C ADD R3,R13
+ 00000214 4D08 SHLL2 R13
+ 00000216 3D2C ADD R2,R13
+ 00000218 3BAC ADD R10,R11
+ 0000021A L528:
+ draw.c 102 {
+ draw.c 103 pixel(buffer, posx + xcount, posy - ycount, character[charact - 65][xcount][ycount
+ +]);
+ 0000021A 66E3 MOV R14,R6
+ 0000021C 67D6 MOV.L @R13+,R7
+ 0000021E 65B3 MOV R11,R5
+ 00000220 BEEE BSR _pixel
+ 00000222 6493 MOV R9,R4
+ 00000224 67D6 MOV.L @R13+,R7
+ 00000226 65B3 MOV R11,R5
+ 00000228 7EFF ADD #-1,R14
+ 0000022A 66E3 MOV R14,R6
+ 0000022C BEE8 BSR _pixel
+ 0000022E 6493 MOV R9,R4
+ 00000230 67D6 MOV.L @R13+,R7
+ 00000232 65B3 MOV R11,R5
+ 00000234 7EFF ADD #-1,R14
+ 00000236 66E3 MOV R14,R6
+ 00000238 BEE2 BSR _pixel
+ 0000023A 6493 MOV R9,R4
+ 0000023C 7C03 ADD #3,R12
+ 0000023E E203 MOV #3,R2
+ 00000240 3C23 CMP/GE R2,R12
+ 00000242 8FEA BF/S L528
+ 00000244 7EFF ADD #-1,R14
+ 00000246 7A01 ADD #1,R10
+ 00000248 E205 MOV #5,R2
+ 0000024A 3A23 CMP/GE R2,R10
+ 0000024C 8BDA BF L526
+ draw.c 104 //this should be optimized: it is drawed pixel per pixel
+ draw.c 105 }
+ draw.c 106 }
+ draw.c 107 }
+ 0000024E 7F0C ADD #12,R15
+ 00000250 4F16 LDS.L @R15+,MACL
+ 00000252 4F26 LDS.L @R15+,PR
+ 00000254 68F6 MOV.L @R15+,R8
+ 00000256 69F6 MOV.L @R15+,R9
+ 00000258 6AF6 MOV.L @R15+,R10
+ 0000025A 6BF6 MOV.L @R15+,R11
+ 0000025C 6CF6 MOV.L @R15+,R12
+ 0000025E 6DF6 MOV.L @R15+,R13
+ 00000260 000B RTS
+ 00000262 6EF6 MOV.L @R15+,R14
+ draw.c 108
+ draw.c 109 void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy)
+ 00000264 _drawString: ; function: drawString
+ ; frame size=24
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 9
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000264 2FE6 MOV.L R14,@-R15
+ draw.c 110 {
+ draw.c 111 int ycount, charcount;
+ draw.c 112
+ draw.c 113 for(charcount = strlenght - 1 , ycount = posy; charcount >= 0; charcount --, ycount += 4)
+ 00000266 6E6C EXTU.B R6,R14
+ 00000268 2FD6 MOV.L R13,@-R15
+ 0000026A 7EFF ADD #-1,R14
+ 0000026C 4F22 STS.L PR,@-R15
+ 0000026E 4E11 CMP/PZ R14
+ 00000270 7FF4 ADD #-12,R15
+ 00000272 1F42 MOV.L R4,@(8,R15)
+ 00000274 2F52 MOV.L R5,@R15
+ 00000276 1F71 MOV.L R7,@(4,R15)
+ 00000278 8F0A BF/S L529
+ 0000027A 5DF6 MOV.L @(24,R15),R13
+ 0000027C L530:
+ draw.c 114 {
+ draw.c 115 drawChar(buffer, *(string + charcount), posx, ycount);
+ 0000027C 56F1 MOV.L @(4,R15),R6
+ 0000027E 67D3 MOV R13,R7
+ 00000280 60F2 MOV.L @R15,R0
+ 00000282 54F2 MOV.L @(8,R15),R4
+ 00000284 BFA7 BSR _drawChar
+ 00000286 05EC MOV.B @(R0,R14),R5
+ 00000288 7EFF ADD #-1,R14
+ 0000028A 4E11 CMP/PZ R14
+ 0000028C 8DF6 BT/S L530
+ 0000028E 7D04 ADD #4,R13
+ 00000290 L529:
+ draw.c 116 //every char seperately
+ draw.c 117 }
+ draw.c 118 }
+ 00000290 7F0C ADD #12,R15
+ 00000292 4F26 LDS.L @R15+,PR
+ 00000294 6DF6 MOV.L @R15+,R13
+ 00000296 000B RTS
+ 00000298 6EF6 MOV.L @R15+,R14
+ draw.c 119
+ draw.c 120 void drawNumber(char *buffer, char num, int posx, int posy)
+ 0000029A _drawNumber: ; function: drawNumber
+ ; frame size=48
+ 0000029A 655E EXTS.B R5,R5
+ 0000029C D243 MOV.L L763+6,R2 ; _numbers
+ 0000029E E33C MOV #60,R3
+ 000002A0 2FE6 MOV.L R14,@-R15
+ 000002A2 2FD6 MOV.L R13,@-R15
+ 000002A4 2FC6 MOV.L R12,@-R15
+ 000002A6 2FB6 MOV.L R11,@-R15
+ 000002A8 2FA6 MOV.L R10,@-R15
+ 000002AA 2F96 MOV.L R9,@-R15
+ 000002AC 2F86 MOV.L R8,@-R15
+ 000002AE 6943 MOV R4,R9
+ 000002B0 4F22 STS.L PR,@-R15
+ draw.c 121 {
+ draw.c 122 int xcount, ycount;
+ draw.c 123
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 10
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 124 for(xcount = 0; xcount < 5; xcount ++)
+ 000002B2 E800 MOV #0,R8
+ 000002B4 4F12 STS.L MACL,@-R15
+ 000002B6 6A83 MOV R8,R10
+ 000002B8 253F MULS R3,R5
+ 000002BA 7FF4 ADD #-12,R15
+ 000002BC 1F61 MOV.L R6,@(4,R15)
+ 000002BE 051A STS MACL,R5
+ 000002C0 2F72 MOV.L R7,@R15
+ 000002C2 325C ADD R5,R2
+ 000002C4 1F22 MOV.L R2,@(8,R15)
+ 000002C6 L531:
+ draw.c 125 {
+ draw.c 126 for(ycount = 0; ycount < 3; ycount ++)
+ 000002C6 6C83 MOV R8,R12
+ 000002C8 6EF2 MOV.L @R15,R14
+ 000002CA 6DA3 MOV R10,R13
+ 000002CC 52F2 MOV.L @(8,R15),R2
+ 000002CE 63A3 MOV R10,R3
+ 000002D0 5BF1 MOV.L @(4,R15),R11
+ 000002D2 4D00 SHLL R13
+ 000002D4 3D3C ADD R3,R13
+ 000002D6 4D08 SHLL2 R13
+ 000002D8 3D2C ADD R2,R13
+ 000002DA 3BAC ADD R10,R11
+ 000002DC L533:
+ draw.c 127 {
+ draw.c 128 pixel(buffer, (int)posx + xcount, (int)posy - ycount, (int)numbers[num][xcount][yc
+ +ount]);
+ 000002DC 67D6 MOV.L @R13+,R7
+ 000002DE 66E3 MOV R14,R6
+ 000002E0 65B3 MOV R11,R5
+ 000002E2 BE8D BSR _pixel
+ 000002E4 6493 MOV R9,R4
+ 000002E6 7EFF ADD #-1,R14
+ 000002E8 67D6 MOV.L @R13+,R7
+ 000002EA 65B3 MOV R11,R5
+ 000002EC 66E3 MOV R14,R6
+ 000002EE BE87 BSR _pixel
+ 000002F0 6493 MOV R9,R4
+ 000002F2 7EFF ADD #-1,R14
+ 000002F4 67D6 MOV.L @R13+,R7
+ 000002F6 65B3 MOV R11,R5
+ 000002F8 66E3 MOV R14,R6
+ 000002FA BE81 BSR _pixel
+ 000002FC 6493 MOV R9,R4
+ 000002FE 7C03 ADD #3,R12
+ 00000300 E203 MOV #3,R2
+ 00000302 3C23 CMP/GE R2,R12
+ 00000304 8FEA BF/S L533
+ 00000306 7EFF ADD #-1,R14
+ 00000308 7A01 ADD #1,R10
+ 0000030A E205 MOV #5,R2
+ 0000030C 3A23 CMP/GE R2,R10
+ 0000030E 8BDA BF L531
+ draw.c 129 //like drawChar
+ draw.c 130 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 11
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 131 }
+ draw.c 132 }
+ 00000310 7F0C ADD #12,R15
+ 00000312 4F16 LDS.L @R15+,MACL
+ 00000314 4F26 LDS.L @R15+,PR
+ 00000316 68F6 MOV.L @R15+,R8
+ 00000318 69F6 MOV.L @R15+,R9
+ 0000031A 6AF6 MOV.L @R15+,R10
+ 0000031C 6BF6 MOV.L @R15+,R11
+ 0000031E 6CF6 MOV.L @R15+,R12
+ 00000320 6DF6 MOV.L @R15+,R13
+ 00000322 000B RTS
+ 00000324 6EF6 MOV.L @R15+,R14
+ draw.c 133
+ draw.c 134 void fillbox(char *buffer, int posx, int posy, int type)
+ 00000326 _fillbox: ; function: fillbox
+ ; frame size=52
+ 00000326 6353 MOV R5,R3
+ 00000328 D221 MOV.L L763+10,R2 ; _spritesheed
+ 0000032A 4508 SHLL2 R5
+ 0000032C 2FE6 MOV.L R14,@-R15
+ 0000032E 353C ADD R3,R5
+ 00000330 2FD6 MOV.L R13,@-R15
+ 00000332 E364 MOV #100,R3
+ 00000334 2FC6 MOV.L R12,@-R15
+ 00000336 2FB6 MOV.L R11,@-R15
+ 00000338 2FA6 MOV.L R10,@-R15
+ 0000033A EB04 MOV #4,R11
+ 0000033C 2F96 MOV.L R9,@-R15
+ draw.c 135 {
+ draw.c 136 int ycount, xcount;
+ draw.c 137
+ draw.c 138 for(ycount = 0; ycount <= 4; ycount ++)
+ 0000033E E900 MOV #0,R9
+ 00000340 2F86 MOV.L R8,@-R15
+ 00000342 6C93 MOV R9,R12
+ 00000344 4F22 STS.L PR,@-R15
+ 00000346 4F12 STS.L MACL,@-R15
+ 00000348 0737 MUL.L R3,R7
+ 0000034A 7FF0 ADD #-16,R15
+ 0000034C 2F42 MOV.L R4,@R15
+ 0000034E 071A STS MACL,R7
+ 00000350 1F53 MOV.L R5,@(12,R15)
+ 00000352 327C ADD R7,R2
+ 00000354 1F21 MOV.L R2,@(4,R15)
+ 00000356 6263 MOV R6,R2
+ 00000358 4608 SHLL2 R6
+ 0000035A 362C ADD R2,R6
+ 0000035C 1F62 MOV.L R6,@(8,R15)
+ 0000035E L534:
+ draw.c 139 {
+ draw.c 140 for(xcount = 0; xcount <= 4; xcount ++)
+ 0000035E 6A93 MOV R9,R10
+ 00000360 5EF3 MOV.L @(12,R15),R14
+ 00000362 6DC3 MOV R12,R13
+ 00000364 52F1 MOV.L @(4,R15),R2
+ 00000366 63C3 MOV R12,R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 12
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000368 58F2 MOV.L @(8,R15),R8
+ 0000036A 7E01 ADD #1,R14
+ 0000036C 4D08 SHLL2 R13
+ 0000036E 3D3C ADD R3,R13
+ 00000370 4D08 SHLL2 R13
+ 00000372 3D2C ADD R2,R13
+ 00000374 38CC ADD R12,R8
+ 00000376 7808 ADD #8,R8
+ 00000378 L535:
+ draw.c 141 {
+ draw.c 142 pixelgray(buffer, posx * 5 + xcount + 1, posy * 5 + ycount + 1 + 7, spritesheed[ty
+ +pe][ycount][xcount]);
+ 00000378 67D6 MOV.L @R13+,R7
+ 0000037A 6683 MOV R8,R6
+ 0000037C 65E3 MOV R14,R5
+ 0000037E BE76 BSR _pixelgray
+ 00000380 64F2 MOV.L @R15,R4
+ 00000382 7A01 ADD #1,R10
+ 00000384 3AB7 CMP/GT R11,R10
+ 00000386 8FF7 BF/S L535
+ 00000388 7E01 ADD #1,R14
+ 0000038A 7C01 ADD #1,R12
+ 0000038C 3CB7 CMP/GT R11,R12
+ 0000038E 8BE6 BF L534
+ draw.c 143 //draw a brick box pixel per pixel
+ draw.c 144 }
+ draw.c 145 }
+ draw.c 146 }
+ 00000390 7F10 ADD #16,R15
+ 00000392 4F16 LDS.L @R15+,MACL
+ 00000394 4F26 LDS.L @R15+,PR
+ 00000396 68F6 MOV.L @R15+,R8
+ 00000398 69F6 MOV.L @R15+,R9
+ 0000039A 6AF6 MOV.L @R15+,R10
+ 0000039C 6BF6 MOV.L @R15+,R11
+ 0000039E 6CF6 MOV.L @R15+,R12
+ 000003A0 6DF6 MOV.L @R15+,R13
+ 000003A2 000B RTS
+ 000003A4 6EF6 MOV.L @R15+,R14
+ 000003A6 L763:
+ 000003A6 0000 .DATA.W 0
+ 000003A8 <00000000> .DATA.L _character
+ 000003AC <00000000> .DATA.L _numbers
+ 000003B0 <00000000> .DATA.L _spritesheed
+ draw.c 147
+ draw.c 148 void normalfillbox(char *buffer, int posx, int posy, int type)
+ 000003B4 _normalfillbox: ; function: normalfillbox
+ ; frame size=52
+ 000003B4 2FE6 MOV.L R14,@-R15
+ 000003B6 6353 MOV R5,R3
+ 000003B8 D23B MOV.L L764+2,R2 ; _spritesheed
+ 000003BA 4508 SHLL2 R5
+ 000003BC 2FD6 MOV.L R13,@-R15
+ 000003BE 353C ADD R3,R5
+ 000003C0 2FC6 MOV.L R12,@-R15
+ 000003C2 E364 MOV #100,R3
+ 000003C4 2FB6 MOV.L R11,@-R15
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 13
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000003C6 EB04 MOV #4,R11
+ 000003C8 2FA6 MOV.L R10,@-R15
+ 000003CA 2F96 MOV.L R9,@-R15
+ 000003CC 2F86 MOV.L R8,@-R15
+ draw.c 149 {
+ draw.c 150 int ycount, xcount;
+ draw.c 151
+ draw.c 152 for(ycount = 0; ycount <= 4; ycount ++)
+ 000003CE E900 MOV #0,R9
+ 000003D0 4F22 STS.L PR,@-R15
+ 000003D2 6C93 MOV R9,R12
+ 000003D4 4F12 STS.L MACL,@-R15
+ 000003D6 7FF0 ADD #-16,R15
+ 000003D8 0737 MUL.L R3,R7
+ 000003DA 2F42 MOV.L R4,@R15
+ 000003DC 1F53 MOV.L R5,@(12,R15)
+ 000003DE 071A STS MACL,R7
+ 000003E0 327C ADD R7,R2
+ 000003E2 1F21 MOV.L R2,@(4,R15)
+ 000003E4 6263 MOV R6,R2
+ 000003E6 4608 SHLL2 R6
+ 000003E8 362C ADD R2,R6
+ 000003EA 1F62 MOV.L R6,@(8,R15)
+ 000003EC L536:
+ 000003EC 5EF3 MOV.L @(12,R15),R14
+ 000003EE 6DC3 MOV R12,R13
+ 000003F0 52F1 MOV.L @(4,R15),R2
+ draw.c 153 {
+ draw.c 154 for(xcount = 0; xcount <= 4; xcount ++)
+ 000003F2 6A93 MOV R9,R10
+ 000003F4 58F2 MOV.L @(8,R15),R8
+ 000003F6 63C3 MOV R12,R3
+ 000003F8 7EFE ADD #-2,R14
+ 000003FA 4D08 SHLL2 R13
+ 000003FC 3D3C ADD R3,R13
+ 000003FE 4D08 SHLL2 R13
+ 00000400 3D2C ADD R2,R13
+ 00000402 38CC ADD R12,R8
+ 00000404 L537:
+ draw.c 155 {
+ draw.c 156 pixelgray(buffer, posx * 5 + xcount - 2, posy * 5 + ycount, spritesheed[type][ycou
+ +nt][xcount]);
+ 00000404 67D6 MOV.L @R13+,R7
+ 00000406 6683 MOV R8,R6
+ 00000408 65E3 MOV R14,R5
+ 0000040A BE30 BSR _pixelgray
+ 0000040C 64F2 MOV.L @R15,R4
+ 0000040E 7A01 ADD #1,R10
+ 00000410 3AB7 CMP/GT R11,R10
+ 00000412 8FF7 BF/S L537
+ 00000414 7E01 ADD #1,R14
+ 00000416 7C01 ADD #1,R12
+ 00000418 3CB7 CMP/GT R11,R12
+ 0000041A 8BE7 BF L536
+ draw.c 157 //like fillbox, just a different position
+ draw.c 158 }
+ draw.c 159 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 14
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 160 }
+ 0000041C 7F10 ADD #16,R15
+ 0000041E 4F16 LDS.L @R15+,MACL
+ 00000420 4F26 LDS.L @R15+,PR
+ 00000422 68F6 MOV.L @R15+,R8
+ 00000424 69F6 MOV.L @R15+,R9
+ 00000426 6AF6 MOV.L @R15+,R10
+ 00000428 6BF6 MOV.L @R15+,R11
+ 0000042A 6CF6 MOV.L @R15+,R12
+ 0000042C 6DF6 MOV.L @R15+,R13
+ 0000042E 000B RTS
+ 00000430 6EF6 MOV.L @R15+,R14
+ draw.c 161
+ draw.c 162 int DrawSprite()
+ 00000432 _DrawSprite: ; function: DrawSprite
+ ; frame size=44
+ 00000432 2FE6 MOV.L R14,@-R15
+ 00000434 2FD6 MOV.L R13,@-R15
+ draw.c 163 {
+ draw.c 164 char fit = True;
+ 00000436 ED01 MOV #1,R13
+ draw.c 165
+ draw.c 166 int xcount, ycount;
+ draw.c 167 right = True;
+ draw.c 168 left = True;
+ draw.c 169
+ draw.c 170 memset(&changemap, 0, 210);
+ 00000438 9635 MOV.W L764,R6 ; H'00D2
+ 0000043A 63D3 MOV R13,R3
+ 0000043C D41D MOV.L L764+14,R4 ; _changemap
+ 0000043E 6233 MOV R3,R2
+ 00000440 2FC6 MOV.L R12,@-R15
+ 00000442 2FB6 MOV.L R11,@-R15
+ 00000444 2FA6 MOV.L R10,@-R15
+ 00000446 2F96 MOV.L R9,@-R15
+ 00000448 2F86 MOV.L R8,@-R15
+ 0000044A 4F22 STS.L PR,@-R15
+ 0000044C DA17 MOV.L L764+6,R10 ; _right
+ 0000044E 7FF4 ADD #-12,R15
+ 00000450 DB17 MOV.L L764+10,R11; _left
+ 00000452 2A30 MOV.B R3,@R10
+ 00000454 2B20 MOV.B R2,@R11
+ 00000456 D318 MOV.L L764+18,R3 ; _memset
+ 00000458 430B JSR @R3
+ 0000045A E500 MOV #0,R5
+ draw.c 171
+ draw.c 172 //now draw a brick, the sizes are different
+ draw.c 173 //structs and a drawing function would be better, it would save code
+ draw.c 174
+ draw.c 175 switch(block)
+ 0000045C D815 MOV.L L764+14,R8 ; _changemap
+ 0000045E EE03 MOV #3,R14
+ 00000460 D717 MOV.L L764+26,R7 ; _globalmap
+ 00000462 D916 MOV.L L764+22,R9 ; _dir
+ 00000464 D617 MOV.L L764+30,R6 ; _ypos
+ 00000466 D518 MOV.L L764+34,R5 ; _xpos
+ 00000468 D218 MOV.L L764+38,R2 ; _block
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 15
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000046A 6020 MOV.B @R2,R0
+ 0000046C 8801 CMP/EQ #1,R0
+ 0000046E 8D2F BT/S L475
+ 00000470 E400 MOV #0,R4
+ 00000472 8802 CMP/EQ #2,R0
+ 00000474 8B01 BF L765
+ 00000476 A0B5 BRA L476
+ 00000478 0009 NOP
+ 0000047A L765:
+ 0000047A 8803 CMP/EQ #3,R0
+ 0000047C 8B01 BF L766
+ 0000047E A296 BRA L477
+ 00000480 0009 NOP
+ 00000482 L766:
+ 00000482 8804 CMP/EQ #4,R0
+ 00000484 8B01 BF L767
+ 00000486 A31C BRA L478
+ 00000488 0009 NOP
+ 0000048A L767:
+ 0000048A 8805 CMP/EQ #5,R0
+ 0000048C 8B01 BF L768
+ 0000048E A3AC BRA L479
+ 00000490 0009 NOP
+ 00000492 L768:
+ 00000492 8806 CMP/EQ #6,R0
+ 00000494 8B01 BF L769
+ 00000496 A433 BRA L480
+ 00000498 0009 NOP
+ 0000049A L769:
+ 0000049A 8807 CMP/EQ #7,R0
+ 0000049C 8B01 BF L770
+ 0000049E A4C2 BRA L481
+ 000004A0 0009 NOP
+ 000004A2 L770:
+ 000004A2 A547 BRA L538
+ 000004A4 0009 NOP
+ 000004A6 L764:
+ 000004A6 00D2 .DATA.W H'00D2
+ 000004A8 <00000000> .DATA.L _spritesheed
+ 000004AC <00000000> .DATA.L _right
+ 000004B0 <00000000> .DATA.L _left
+ 000004B4 <00000000> .DATA.L _changemap
+ 000004B8 <00000000> .DATA.L _memset
+ 000004BC <00000000> .DATA.L _dir
+ 000004C0 <00000000> .DATA.L _globalmap
+ 000004C4 <00000000> .DATA.L _ypos
+ 000004C8 <00000000> .DATA.L _xpos
+ 000004CC <00000000> .DATA.L _block
+ 000004D0 L475: ; case label
+ draw.c 176 {
+ draw.c 177 case 1:
+ draw.c 178 for(xcount = 0; xcount < 4; xcount ++)
+ 000004D0 2F42 MOV.L R4,@R15
+ 000004D2 L539:
+ draw.c 179 {
+ draw.c 180 for(ycount = 0; ycount < 3; ycount ++)
+ 000004D2 6C43 MOV R4,R12
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 16
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000004D4 63F2 MOV.L @R15,R3
+ 000004D6 4308 SHLL2 R3
+ 000004D8 1F32 MOV.L R3,@(8,R15)
+ 000004DA L540:
+ draw.c 181 {
+ draw.c 182 if(blockO[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 000004DA 62C3 MOV R12,R2
+ 000004DC 6090 MOV.B @R9,R0
+ 000004DE 4208 SHLL2 R2
+ 000004E0 6303 MOV R0,R3
+ 000004E2 4000 SHLL R0
+ 000004E4 303C ADD R3,R0
+ 000004E6 4008 SHLL2 R0
+ 000004E8 D38D MOV.L L771+2,R3 ; _blockO
+ 000004EA 4208 SHLL2 R2
+ 000004EC 4008 SHLL2 R0
+ 000004EE 303C ADD R3,R0
+ 000004F0 302C ADD R2,R0
+ 000004F2 52F2 MOV.L @(8,R15),R2
+ 000004F4 002E MOV.L @(R0,R2),R0
+ 000004F6 8801 CMP/EQ #1,R0
+ 000004F8 8B67 BF L541
+ 000004FA D18A MOV.L L771+6,R1 ; _ypos
+ 000004FC 6012 MOV.L @R1,R0
+ 000004FE 30C8 SUB R12,R0
+ 00000500 70FE ADD #-2,R0
+ 00000502 4011 CMP/PZ R0
+ 00000504 8B61 BF L541
+ draw.c 183 {
+ draw.c 184 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 00000506 63F2 MOV.L @R15,R3
+ 00000508 6252 MOV.L @R5,R2
+ 0000050A 3238 SUB R3,R2
+ 0000050C 72FE ADD #-2,R2
+ 0000050E 4211 CMP/PZ R2
+ 00000510 8F0A BF/S L543
+ 00000512 1F21 MOV.L R2,@(4,R15)
+ 00000514 E009 MOV #9,R0
+ 00000516 3207 CMP/GT R0,R2
+ 00000518 8906 BT L543
+ 0000051A D082 MOV.L L771+6,R0 ; _ypos
+ 0000051C 6102 MOV.L @R0,R1
+ 0000051E E014 MOV #20,R0
+ 00000520 31C8 SUB R12,R1
+ 00000522 71FE ADD #-2,R1
+ 00000524 3107 CMP/GT R0,R1
+ 00000526 8B01 BF L542
+ 00000528 L543:
+ draw.c 185 {
+ draw.c 186 fit = False;
+ 00000528 A04F BRA L541
+ 0000052A 6D43 MOV R4,R13
+ 0000052C L542:
+ draw.c 187 }
+ draw.c 188 else
+ draw.c 189 {
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 17
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 190 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +1;
+ 0000052C 6062 MOV.L @R6,R0
+ 0000052E E101 MOV #1,R1
+ 00000530 6252 MOV.L @R5,R2
+ 00000532 30C8 SUB R12,R0
+ 00000534 70FE ADD #-2,R0
+ 00000536 6303 MOV R0,R3
+ 00000538 4008 SHLL2 R0
+ 0000053A 303C ADD R3,R0
+ 0000053C 63F2 MOV.L @R15,R3
+ 0000053E 4000 SHLL R0
+ 00000540 308C ADD R8,R0
+ 00000542 3238 SUB R3,R2
+ 00000544 72FE ADD #-2,R2
+ 00000546 0214 MOV.B R1,@(R0,R2)
+ draw.c 191 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000548 6062 MOV.L @R6,R0
+ 0000054A 30C8 SUB R12,R0
+ 0000054C 70FE ADD #-2,R0
+ 0000054E 6303 MOV R0,R3
+ 00000550 1F01 MOV.L R0,@(4,R15)
+ 00000552 4008 SHLL2 R0
+ 00000554 6252 MOV.L @R5,R2
+ 00000556 303C ADD R3,R0
+ 00000558 63F2 MOV.L @R15,R3
+ 0000055A 4000 SHLL R0
+ 0000055C 307C ADD R7,R0
+ 0000055E 3238 SUB R3,R2
+ 00000560 72FE ADD #-2,R2
+ 00000562 002C MOV.B @(R0,R2),R0
+ 00000564 2008 TST R0,R0
+ 00000566 8B03 BF L546
+ 00000568 52F1 MOV.L @(4,R15),R2
+ 0000056A E114 MOV #20,R1
+ 0000056C 3213 CMP/GE R1,R2
+ 0000056E 8B00 BF L545
+ 00000570 L546:
+ draw.c 192 {
+ draw.c 193 fit = False;
+ 00000570 6D43 MOV R4,R13
+ 00000572 L545:
+ draw.c 194 }
+ draw.c 195 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000572 6062 MOV.L @R6,R0
+ 00000574 6252 MOV.L @R5,R2
+ 00000576 30C8 SUB R12,R0
+ 00000578 70FE ADD #-2,R0
+ 0000057A 6303 MOV R0,R3
+ 0000057C 4008 SHLL2 R0
+ 0000057E 303C ADD R3,R0
+ 00000580 63F2 MOV.L @R15,R3
+ 00000582 4000 SHLL R0
+ 00000584 307C ADD R7,R0
+ 00000586 3238 SUB R3,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 18
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000588 1F21 MOV.L R2,@(4,R15)
+ 0000058A 72FD ADD #-3,R2
+ 0000058C 002C MOV.B @(R0,R2),R0
+ 0000058E 2008 TST R0,R0
+ 00000590 8B04 BF L548
+ 00000592 E201 MOV #1,R2
+ 00000594 51F1 MOV.L @(4,R15),R1
+ 00000596 71FE ADD #-2,R1
+ 00000598 3123 CMP/GE R2,R1
+ 0000059A 8900 BT L547
+ 0000059C L548:
+ draw.c 196 {
+ draw.c 197 right = False;
+ 0000059C 2A40 MOV.B R4,@R10
+ 0000059E L547:
+ draw.c 198 }
+ draw.c 199 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 0000059E 6062 MOV.L @R6,R0
+ 000005A0 6252 MOV.L @R5,R2
+ 000005A2 30C8 SUB R12,R0
+ 000005A4 70FE ADD #-2,R0
+ 000005A6 6303 MOV R0,R3
+ 000005A8 4008 SHLL2 R0
+ 000005AA 303C ADD R3,R0
+ 000005AC 63F2 MOV.L @R15,R3
+ 000005AE 4000 SHLL R0
+ 000005B0 307C ADD R7,R0
+ 000005B2 3238 SUB R3,R2
+ 000005B4 1F21 MOV.L R2,@(4,R15)
+ 000005B6 72FF ADD #-1,R2
+ 000005B8 002C MOV.B @(R0,R2),R0
+ 000005BA 2008 TST R0,R0
+ 000005BC 8B04 BF L550
+ 000005BE E208 MOV #8,R2
+ 000005C0 51F1 MOV.L @(4,R15),R1
+ 000005C2 71FE ADD #-2,R1
+ 000005C4 3127 CMP/GT R2,R1
+ 000005C6 8B00 BF L541
+ 000005C8 L550:
+ draw.c 200 {
+ draw.c 201 left = False;
+ 000005C8 2B40 MOV.B R4,@R11
+ 000005CA L541:
+ 000005CA 7C01 ADD #1,R12
+ 000005CC 3CE3 CMP/GE R14,R12
+ 000005CE 8B84 BF L540
+ 000005D0 62F2 MOV.L @R15,R2
+ 000005D2 E304 MOV #4,R3
+ 000005D4 7201 ADD #1,R2
+ 000005D6 3233 CMP/GE R3,R2
+ 000005D8 8D02 BT/S L772
+ 000005DA 2F22 MOV.L R2,@R15
+ 000005DC AF79 BRA L539
+ 000005DE 0009 NOP
+ 000005E0 L772:
+ draw.c 202 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 19
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 203 }
+ draw.c 204 }
+ draw.c 205 }
+ draw.c 206 }
+ draw.c 207 break;
+ 000005E0 A4A8 BRA L538
+ 000005E2 0009 NOP
+ 000005E4 L476: ; case label
+ draw.c 208 case 2:
+ draw.c 209 for(xcount = 0; xcount < 4; xcount ++)
+ 000005E4 6C43 MOV R4,R12
+ 000005E6 L551:
+ draw.c 210 {
+ draw.c 211 for(ycount = 0; ycount < 4; ycount ++)
+ 000005E6 6E43 MOV R4,R14
+ 000005E8 63C3 MOV R12,R3
+ 000005EA 4308 SHLL2 R3
+ 000005EC 2F32 MOV.L R3,@R15
+ 000005EE L553:
+ draw.c 212 {
+ draw.c 213 if(blockI[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 000005EE 63E3 MOV R14,R3
+ 000005F0 D24D MOV.L L771+10,R2 ; _blockI
+ 000005F2 4308 SHLL2 R3
+ 000005F4 6090 MOV.B @R9,R0
+ 000005F6 4308 SHLL2 R3
+ 000005F8 4008 SHLL2 R0
+ 000005FA 4008 SHLL2 R0
+ 000005FC 4008 SHLL2 R0
+ 000005FE 302C ADD R2,R0
+ 00000600 303C ADD R3,R0
+ 00000602 63F2 MOV.L @R15,R3
+ 00000604 003E MOV.L @(R0,R3),R0
+ 00000606 8801 CMP/EQ #1,R0
+ 00000608 8B62 BF L554
+ 0000060A D146 MOV.L L771+6,R1 ; _ypos
+ 0000060C 6012 MOV.L @R1,R0
+ 0000060E 30E8 SUB R14,R0
+ 00000610 70FE ADD #-2,R0
+ 00000612 4011 CMP/PZ R0
+ 00000614 8B5C BF L554
+ draw.c 214 {
+ draw.c 215 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 00000616 6252 MOV.L @R5,R2
+ 00000618 32C8 SUB R12,R2
+ 0000061A 72FE ADD #-2,R2
+ 0000061C 4211 CMP/PZ R2
+ 0000061E 8F0A BF/S L556
+ 00000620 1F22 MOV.L R2,@(8,R15)
+ 00000622 E109 MOV #9,R1
+ 00000624 3217 CMP/GT R1,R2
+ 00000626 8906 BT L556
+ 00000628 D33E MOV.L L771+6,R3 ; _ypos
+ 0000062A E114 MOV #20,R1
+ 0000062C 6032 MOV.L @R3,R0
+ 0000062E 30E8 SUB R14,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 20
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000630 70FE ADD #-2,R0
+ 00000632 3017 CMP/GT R1,R0
+ 00000634 8B01 BF L555
+ 00000636 L556:
+ draw.c 216 {
+ draw.c 217 fit = False;
+ 00000636 A04B BRA L554
+ 00000638 6D43 MOV R4,R13
+ 0000063A L555:
+ draw.c 218 }
+ draw.c 219 else
+ draw.c 220 {
+ draw.c 221 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +2;
+ 0000063A 6062 MOV.L @R6,R0
+ 0000063C 6252 MOV.L @R5,R2
+ 0000063E 30E8 SUB R14,R0
+ 00000640 70FE ADD #-2,R0
+ 00000642 6303 MOV R0,R3
+ 00000644 4008 SHLL2 R0
+ 00000646 303C ADD R3,R0
+ 00000648 4000 SHLL R0
+ 0000064A 308C ADD R8,R0
+ 0000064C 32C8 SUB R12,R2
+ 0000064E 72FE ADD #-2,R2
+ 00000650 E302 MOV #2,R3
+ 00000652 0234 MOV.B R3,@(R0,R2)
+ draw.c 222 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000654 6062 MOV.L @R6,R0
+ 00000656 30E8 SUB R14,R0
+ 00000658 70FE ADD #-2,R0
+ 0000065A 6303 MOV R0,R3
+ 0000065C 1F02 MOV.L R0,@(8,R15)
+ 0000065E 4008 SHLL2 R0
+ 00000660 6252 MOV.L @R5,R2
+ 00000662 303C ADD R3,R0
+ 00000664 4000 SHLL R0
+ 00000666 307C ADD R7,R0
+ 00000668 32C8 SUB R12,R2
+ 0000066A 72FE ADD #-2,R2
+ 0000066C 032C MOV.B @(R0,R2),R3
+ 0000066E 2338 TST R3,R3
+ 00000670 8B03 BF L559
+ 00000672 E114 MOV #20,R1
+ 00000674 52F2 MOV.L @(8,R15),R2
+ 00000676 3213 CMP/GE R1,R2
+ 00000678 8B00 BF L558
+ 0000067A L559:
+ draw.c 223 {
+ draw.c 224 fit = False;
+ 0000067A 6D43 MOV R4,R13
+ 0000067C L558:
+ draw.c 225 }
+ draw.c 226 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 0000067C 6062 MOV.L @R6,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 21
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000067E 30E8 SUB R14,R0
+ 00000680 6252 MOV.L @R5,R2
+ 00000682 70FE ADD #-2,R0
+ 00000684 6303 MOV R0,R3
+ 00000686 4008 SHLL2 R0
+ 00000688 303C ADD R3,R0
+ 0000068A 4000 SHLL R0
+ 0000068C 307C ADD R7,R0
+ 0000068E 32C8 SUB R12,R2
+ 00000690 1F22 MOV.L R2,@(8,R15)
+ 00000692 72FD ADD #-3,R2
+ 00000694 032C MOV.B @(R0,R2),R3
+ 00000696 2338 TST R3,R3
+ 00000698 8B04 BF L561
+ 0000069A E301 MOV #1,R3
+ 0000069C 51F2 MOV.L @(8,R15),R1
+ 0000069E 71FE ADD #-2,R1
+ 000006A0 3133 CMP/GE R3,R1
+ 000006A2 8900 BT L560
+ 000006A4 L561:
+ draw.c 227 {
+ draw.c 228 right = False;
+ 000006A4 2A40 MOV.B R4,@R10
+ 000006A6 L560:
+ draw.c 229 }
+ draw.c 230 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 000006A6 6062 MOV.L @R6,R0
+ 000006A8 6252 MOV.L @R5,R2
+ 000006AA 30E8 SUB R14,R0
+ 000006AC 70FE ADD #-2,R0
+ 000006AE 6303 MOV R0,R3
+ 000006B0 4008 SHLL2 R0
+ 000006B2 303C ADD R3,R0
+ 000006B4 4000 SHLL R0
+ 000006B6 307C ADD R7,R0
+ 000006B8 32C8 SUB R12,R2
+ 000006BA 1F22 MOV.L R2,@(8,R15)
+ 000006BC 72FF ADD #-1,R2
+ 000006BE 032C MOV.B @(R0,R2),R3
+ 000006C0 2338 TST R3,R3
+ 000006C2 8B04 BF L563
+ 000006C4 51F2 MOV.L @(8,R15),R1
+ 000006C6 E308 MOV #8,R3
+ 000006C8 71FE ADD #-2,R1
+ 000006CA 3137 CMP/GT R3,R1
+ 000006CC 8B00 BF L554
+ 000006CE L563:
+ draw.c 231 {
+ draw.c 232 left = False;
+ 000006CE 2B40 MOV.B R4,@R11
+ 000006D0 L554:
+ 000006D0 6090 MOV.B @R9,R0
+ 000006D2 7E01 ADD #1,R14
+ 000006D4 D214 MOV.L L771+10,R2 ; _blockI
+ 000006D6 4008 SHLL2 R0
+ 000006D8 4008 SHLL2 R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 22
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000006DA 4008 SHLL2 R0
+ 000006DC 63E3 MOV R14,R3
+ 000006DE 4308 SHLL2 R3
+ 000006E0 4308 SHLL2 R3
+ 000006E2 302C ADD R2,R0
+ 000006E4 303C ADD R3,R0
+ 000006E6 63F2 MOV.L @R15,R3
+ 000006E8 003E MOV.L @(R0,R3),R0
+ 000006EA 8801 CMP/EQ #1,R0
+ 000006EC 8B69 BF L564
+ 000006EE D10D MOV.L L771+6,R1 ; _ypos
+ 000006F0 6012 MOV.L @R1,R0
+ 000006F2 30E8 SUB R14,R0
+ 000006F4 70FE ADD #-2,R0
+ 000006F6 4011 CMP/PZ R0
+ 000006F8 8B63 BF L564
+ 000006FA 6252 MOV.L @R5,R2
+ 000006FC 32C8 SUB R12,R2
+ 000006FE 72FE ADD #-2,R2
+ 00000700 4211 CMP/PZ R2
+ 00000702 8F0A BF/S L566
+ 00000704 1F22 MOV.L R2,@(8,R15)
+ 00000706 E109 MOV #9,R1
+ 00000708 3217 CMP/GT R1,R2
+ 0000070A 8906 BT L566
+ 0000070C D305 MOV.L L771+6,R3 ; _ypos
+ 0000070E E114 MOV #20,R1
+ 00000710 6032 MOV.L @R3,R0
+ 00000712 30E8 SUB R14,R0
+ 00000714 70FE ADD #-2,R0
+ 00000716 3017 CMP/GT R1,R0
+ 00000718 8B08 BF L565
+ 0000071A L566:
+ 0000071A A052 BRA L564
+ 0000071C 6D43 MOV R4,R13
+ 0000071E L771:
+ 0000071E 0000 .DATA.W 0
+ 00000720 <00000000> .DATA.L _blockO
+ 00000724 <00000000> .DATA.L _ypos
+ 00000728 <00000000> .DATA.L _blockI
+ 0000072C L565:
+ 0000072C 6062 MOV.L @R6,R0
+ 0000072E 30E8 SUB R14,R0
+ 00000730 6252 MOV.L @R5,R2
+ 00000732 70FE ADD #-2,R0
+ 00000734 6303 MOV R0,R3
+ 00000736 4008 SHLL2 R0
+ 00000738 303C ADD R3,R0
+ 0000073A 4000 SHLL R0
+ 0000073C 308C ADD R8,R0
+ 0000073E 32C8 SUB R12,R2
+ 00000740 72FE ADD #-2,R2
+ 00000742 E302 MOV #2,R3
+ 00000744 0234 MOV.B R3,@(R0,R2)
+ 00000746 6062 MOV.L @R6,R0
+ 00000748 30E8 SUB R14,R0
+ 0000074A 70FE ADD #-2,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 23
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000074C 1F02 MOV.L R0,@(8,R15)
+ 0000074E 6303 MOV R0,R3
+ 00000750 6252 MOV.L @R5,R2
+ 00000752 4008 SHLL2 R0
+ 00000754 303C ADD R3,R0
+ 00000756 4000 SHLL R0
+ 00000758 307C ADD R7,R0
+ 0000075A 32C8 SUB R12,R2
+ 0000075C 72FE ADD #-2,R2
+ 0000075E 032C MOV.B @(R0,R2),R3
+ 00000760 2338 TST R3,R3
+ 00000762 8B03 BF L569
+ 00000764 52F2 MOV.L @(8,R15),R2
+ 00000766 E114 MOV #20,R1
+ 00000768 3213 CMP/GE R1,R2
+ 0000076A 8B00 BF L568
+ 0000076C L569:
+ 0000076C 6D43 MOV R4,R13
+ 0000076E L568:
+ 0000076E 6062 MOV.L @R6,R0
+ 00000770 6252 MOV.L @R5,R2
+ 00000772 30E8 SUB R14,R0
+ 00000774 70FE ADD #-2,R0
+ 00000776 6303 MOV R0,R3
+ 00000778 4008 SHLL2 R0
+ 0000077A 303C ADD R3,R0
+ 0000077C 4000 SHLL R0
+ 0000077E 307C ADD R7,R0
+ 00000780 32C8 SUB R12,R2
+ 00000782 1F22 MOV.L R2,@(8,R15)
+ 00000784 72FD ADD #-3,R2
+ 00000786 032C MOV.B @(R0,R2),R3
+ 00000788 2338 TST R3,R3
+ 0000078A 8B04 BF L571
+ 0000078C 51F2 MOV.L @(8,R15),R1
+ 0000078E E301 MOV #1,R3
+ 00000790 71FE ADD #-2,R1
+ 00000792 3133 CMP/GE R3,R1
+ 00000794 8900 BT L570
+ 00000796 L571:
+ 00000796 2A40 MOV.B R4,@R10
+ 00000798 L570:
+ 00000798 6062 MOV.L @R6,R0
+ 0000079A 30E8 SUB R14,R0
+ 0000079C 6252 MOV.L @R5,R2
+ 0000079E 70FE ADD #-2,R0
+ 000007A0 6303 MOV R0,R3
+ 000007A2 4008 SHLL2 R0
+ 000007A4 303C ADD R3,R0
+ 000007A6 4000 SHLL R0
+ 000007A8 307C ADD R7,R0
+ 000007AA 32C8 SUB R12,R2
+ 000007AC 1F22 MOV.L R2,@(8,R15)
+ 000007AE 72FF ADD #-1,R2
+ 000007B0 032C MOV.B @(R0,R2),R3
+ 000007B2 2338 TST R3,R3
+ 000007B4 8B04 BF L573
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 24
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000007B6 E308 MOV #8,R3
+ 000007B8 51F2 MOV.L @(8,R15),R1
+ 000007BA 71FE ADD #-2,R1
+ 000007BC 3137 CMP/GT R3,R1
+ 000007BE 8B00 BF L564
+ 000007C0 L573:
+ 000007C0 2B40 MOV.B R4,@R11
+ 000007C2 L564:
+ 000007C2 7E01 ADD #1,R14
+ 000007C4 6090 MOV.B @R9,R0
+ 000007C6 63E3 MOV R14,R3
+ 000007C8 D24A MOV.L L773,R2 ; _blockI
+ 000007CA 4008 SHLL2 R0
+ 000007CC 4008 SHLL2 R0
+ 000007CE 4008 SHLL2 R0
+ 000007D0 4308 SHLL2 R3
+ 000007D2 4308 SHLL2 R3
+ 000007D4 302C ADD R2,R0
+ 000007D6 303C ADD R3,R0
+ 000007D8 63F2 MOV.L @R15,R3
+ 000007DA 003E MOV.L @(R0,R3),R0
+ 000007DC 8801 CMP/EQ #1,R0
+ 000007DE 8B62 BF L574
+ 000007E0 D145 MOV.L L773+4,R1 ; _ypos
+ 000007E2 6012 MOV.L @R1,R0
+ 000007E4 30E8 SUB R14,R0
+ 000007E6 70FE ADD #-2,R0
+ 000007E8 4011 CMP/PZ R0
+ 000007EA 8B5C BF L574
+ 000007EC 6252 MOV.L @R5,R2
+ 000007EE 32C8 SUB R12,R2
+ 000007F0 72FE ADD #-2,R2
+ 000007F2 4211 CMP/PZ R2
+ 000007F4 8F0A BF/S L576
+ 000007F6 1F22 MOV.L R2,@(8,R15)
+ 000007F8 E109 MOV #9,R1
+ 000007FA 3217 CMP/GT R1,R2
+ 000007FC 8906 BT L576
+ 000007FE E114 MOV #20,R1
+ 00000800 D33D MOV.L L773+4,R3 ; _ypos
+ 00000802 6032 MOV.L @R3,R0
+ 00000804 30E8 SUB R14,R0
+ 00000806 70FE ADD #-2,R0
+ 00000808 3017 CMP/GT R1,R0
+ 0000080A 8B01 BF L575
+ 0000080C L576:
+ 0000080C A04B BRA L574
+ 0000080E 6D43 MOV R4,R13
+ 00000810 L575:
+ 00000810 6062 MOV.L @R6,R0
+ 00000812 30E8 SUB R14,R0
+ 00000814 6252 MOV.L @R5,R2
+ 00000816 70FE ADD #-2,R0
+ 00000818 6303 MOV R0,R3
+ 0000081A 4008 SHLL2 R0
+ 0000081C 303C ADD R3,R0
+ 0000081E 4000 SHLL R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 25
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000820 308C ADD R8,R0
+ 00000822 32C8 SUB R12,R2
+ 00000824 72FE ADD #-2,R2
+ 00000826 E302 MOV #2,R3
+ 00000828 0234 MOV.B R3,@(R0,R2)
+ 0000082A 6062 MOV.L @R6,R0
+ 0000082C 30E8 SUB R14,R0
+ 0000082E 70FE ADD #-2,R0
+ 00000830 1F02 MOV.L R0,@(8,R15)
+ 00000832 6303 MOV R0,R3
+ 00000834 6252 MOV.L @R5,R2
+ 00000836 4008 SHLL2 R0
+ 00000838 303C ADD R3,R0
+ 0000083A 4000 SHLL R0
+ 0000083C 307C ADD R7,R0
+ 0000083E 32C8 SUB R12,R2
+ 00000840 72FE ADD #-2,R2
+ 00000842 032C MOV.B @(R0,R2),R3
+ 00000844 2338 TST R3,R3
+ 00000846 8B03 BF L579
+ 00000848 52F2 MOV.L @(8,R15),R2
+ 0000084A E114 MOV #20,R1
+ 0000084C 3213 CMP/GE R1,R2
+ 0000084E 8B00 BF L578
+ 00000850 L579:
+ 00000850 6D43 MOV R4,R13
+ 00000852 L578:
+ 00000852 6062 MOV.L @R6,R0
+ 00000854 6252 MOV.L @R5,R2
+ 00000856 30E8 SUB R14,R0
+ 00000858 70FE ADD #-2,R0
+ 0000085A 6303 MOV R0,R3
+ 0000085C 4008 SHLL2 R0
+ 0000085E 303C ADD R3,R0
+ 00000860 4000 SHLL R0
+ 00000862 307C ADD R7,R0
+ 00000864 32C8 SUB R12,R2
+ 00000866 1F22 MOV.L R2,@(8,R15)
+ 00000868 72FD ADD #-3,R2
+ 0000086A 032C MOV.B @(R0,R2),R3
+ 0000086C 2338 TST R3,R3
+ 0000086E 8B04 BF L581
+ 00000870 51F2 MOV.L @(8,R15),R1
+ 00000872 E301 MOV #1,R3
+ 00000874 71FE ADD #-2,R1
+ 00000876 3133 CMP/GE R3,R1
+ 00000878 8900 BT L580
+ 0000087A L581:
+ 0000087A 2A40 MOV.B R4,@R10
+ 0000087C L580:
+ 0000087C 6062 MOV.L @R6,R0
+ 0000087E 30E8 SUB R14,R0
+ 00000880 6252 MOV.L @R5,R2
+ 00000882 70FE ADD #-2,R0
+ 00000884 6303 MOV R0,R3
+ 00000886 4008 SHLL2 R0
+ 00000888 303C ADD R3,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 26
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000088A 4000 SHLL R0
+ 0000088C 307C ADD R7,R0
+ 0000088E 32C8 SUB R12,R2
+ 00000890 1F22 MOV.L R2,@(8,R15)
+ 00000892 72FF ADD #-1,R2
+ 00000894 032C MOV.B @(R0,R2),R3
+ 00000896 2338 TST R3,R3
+ 00000898 8B04 BF L583
+ 0000089A E308 MOV #8,R3
+ 0000089C 51F2 MOV.L @(8,R15),R1
+ 0000089E 71FE ADD #-2,R1
+ 000008A0 3137 CMP/GT R3,R1
+ 000008A2 8B00 BF L574
+ 000008A4 L583:
+ 000008A4 2B40 MOV.B R4,@R11
+ 000008A6 L574:
+ 000008A6 7E01 ADD #1,R14
+ 000008A8 6090 MOV.B @R9,R0
+ 000008AA 63E3 MOV R14,R3
+ 000008AC D211 MOV.L L773,R2 ; _blockI
+ 000008AE 4008 SHLL2 R0
+ 000008B0 4008 SHLL2 R0
+ 000008B2 4008 SHLL2 R0
+ 000008B4 4308 SHLL2 R3
+ 000008B6 4308 SHLL2 R3
+ 000008B8 302C ADD R2,R0
+ 000008BA 303C ADD R3,R0
+ 000008BC 63F2 MOV.L @R15,R3
+ 000008BE 003E MOV.L @(R0,R3),R0
+ 000008C0 8801 CMP/EQ #1,R0
+ 000008C2 8B66 BF L584
+ 000008C4 D10C MOV.L L773+4,R1 ; _ypos
+ 000008C6 6012 MOV.L @R1,R0
+ 000008C8 30E8 SUB R14,R0
+ 000008CA 70FE ADD #-2,R0
+ 000008CC 4011 CMP/PZ R0
+ 000008CE 8B60 BF L584
+ 000008D0 6252 MOV.L @R5,R2
+ 000008D2 32C8 SUB R12,R2
+ 000008D4 72FE ADD #-2,R2
+ 000008D6 4211 CMP/PZ R2
+ 000008D8 8F0A BF/S L586
+ 000008DA 1F22 MOV.L R2,@(8,R15)
+ 000008DC E109 MOV #9,R1
+ 000008DE 3217 CMP/GT R1,R2
+ 000008E0 8906 BT L586
+ 000008E2 E114 MOV #20,R1
+ 000008E4 D304 MOV.L L773+4,R3 ; _ypos
+ 000008E6 6032 MOV.L @R3,R0
+ 000008E8 30E8 SUB R14,R0
+ 000008EA 70FE ADD #-2,R0
+ 000008EC 3017 CMP/GT R1,R0
+ 000008EE 8B05 BF L585
+ 000008F0 L586:
+ 000008F0 A04F BRA L584
+ 000008F2 6D43 MOV R4,R13
+ 000008F4 L773:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 27
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000008F4 <00000000> .DATA.L _blockI
+ 000008F8 <00000000> .DATA.L _ypos
+ 000008FC L585:
+ 000008FC 6062 MOV.L @R6,R0
+ 000008FE 30E8 SUB R14,R0
+ 00000900 6252 MOV.L @R5,R2
+ 00000902 70FE ADD #-2,R0
+ 00000904 6303 MOV R0,R3
+ 00000906 4008 SHLL2 R0
+ 00000908 303C ADD R3,R0
+ 0000090A 4000 SHLL R0
+ 0000090C 308C ADD R8,R0
+ 0000090E 32C8 SUB R12,R2
+ 00000910 72FE ADD #-2,R2
+ 00000912 E302 MOV #2,R3
+ 00000914 0234 MOV.B R3,@(R0,R2)
+ 00000916 6062 MOV.L @R6,R0
+ 00000918 30E8 SUB R14,R0
+ 0000091A 70FE ADD #-2,R0
+ 0000091C 1F02 MOV.L R0,@(8,R15)
+ 0000091E 6303 MOV R0,R3
+ 00000920 6252 MOV.L @R5,R2
+ 00000922 4008 SHLL2 R0
+ 00000924 303C ADD R3,R0
+ 00000926 4000 SHLL R0
+ 00000928 307C ADD R7,R0
+ 0000092A 32C8 SUB R12,R2
+ 0000092C 72FE ADD #-2,R2
+ 0000092E 032C MOV.B @(R0,R2),R3
+ 00000930 2338 TST R3,R3
+ 00000932 8B03 BF L589
+ 00000934 52F2 MOV.L @(8,R15),R2
+ 00000936 E114 MOV #20,R1
+ 00000938 3213 CMP/GE R1,R2
+ 0000093A 8B00 BF L588
+ 0000093C L589:
+ 0000093C 6D43 MOV R4,R13
+ 0000093E L588:
+ 0000093E 6062 MOV.L @R6,R0
+ 00000940 6252 MOV.L @R5,R2
+ 00000942 30E8 SUB R14,R0
+ 00000944 70FE ADD #-2,R0
+ 00000946 6303 MOV R0,R3
+ 00000948 4008 SHLL2 R0
+ 0000094A 303C ADD R3,R0
+ 0000094C 4000 SHLL R0
+ 0000094E 307C ADD R7,R0
+ 00000950 32C8 SUB R12,R2
+ 00000952 1F22 MOV.L R2,@(8,R15)
+ 00000954 72FD ADD #-3,R2
+ 00000956 032C MOV.B @(R0,R2),R3
+ 00000958 2338 TST R3,R3
+ 0000095A 8B04 BF L591
+ 0000095C 51F2 MOV.L @(8,R15),R1
+ 0000095E E301 MOV #1,R3
+ 00000960 71FE ADD #-2,R1
+ 00000962 3133 CMP/GE R3,R1
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 28
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000964 8900 BT L590
+ 00000966 L591:
+ 00000966 2A40 MOV.B R4,@R10
+ 00000968 L590:
+ 00000968 6062 MOV.L @R6,R0
+ 0000096A 30E8 SUB R14,R0
+ 0000096C 6252 MOV.L @R5,R2
+ 0000096E 70FE ADD #-2,R0
+ 00000970 6303 MOV R0,R3
+ 00000972 4008 SHLL2 R0
+ 00000974 303C ADD R3,R0
+ 00000976 4000 SHLL R0
+ 00000978 307C ADD R7,R0
+ 0000097A 32C8 SUB R12,R2
+ 0000097C 1F22 MOV.L R2,@(8,R15)
+ 0000097E 72FF ADD #-1,R2
+ 00000980 032C MOV.B @(R0,R2),R3
+ 00000982 2338 TST R3,R3
+ 00000984 8B04 BF L593
+ 00000986 E308 MOV #8,R3
+ 00000988 51F2 MOV.L @(8,R15),R1
+ 0000098A 71FE ADD #-2,R1
+ 0000098C 3137 CMP/GT R3,R1
+ 0000098E 8B00 BF L584
+ 00000990 L593:
+ 00000990 2B40 MOV.B R4,@R11
+ 00000992 L584:
+ 00000992 7E01 ADD #1,R14
+ 00000994 E304 MOV #4,R3
+ 00000996 3E33 CMP/GE R3,R14
+ 00000998 8901 BT L774
+ 0000099A AE28 BRA L553
+ 0000099C 0009 NOP
+ 0000099E L774:
+ 0000099E 7C01 ADD #1,R12
+ 000009A0 E304 MOV #4,R3
+ 000009A2 3C33 CMP/GE R3,R12
+ 000009A4 8901 BT L775
+ 000009A6 AE1E BRA L551
+ 000009A8 0009 NOP
+ 000009AA L775:
+ draw.c 233 }
+ draw.c 234 }
+ draw.c 235 }
+ draw.c 236 }
+ draw.c 237 }
+ draw.c 238 break;
+ 000009AA A2C3 BRA L538
+ 000009AC 0009 NOP
+ 000009AE L477: ; case label
+ draw.c 239 case 3:
+ draw.c 240 for(xcount = 0; xcount < 3; xcount ++)
+ 000009AE 2F42 MOV.L R4,@R15
+ 000009B0 L594:
+ 000009B0 63F2 MOV.L @R15,R3
+ draw.c 241 {
+ draw.c 242 for(ycount = 0; ycount < 3; ycount ++)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 29
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000009B2 6C43 MOV R4,R12
+ 000009B4 4308 SHLL2 R3
+ 000009B6 1F32 MOV.L R3,@(8,R15)
+ 000009B8 L595:
+ draw.c 243 {
+ draw.c 244 if(blockT[dir][ycount][xcount] == 1&& ypos - ycount - 2 >= 0)
+ 000009B8 6090 MOV.B @R9,R0
+ 000009BA 62C3 MOV R12,R2
+ 000009BC D159 MOV.L L776+2,R1 ; _blockT
+ 000009BE 6303 MOV R0,R3
+ 000009C0 4008 SHLL2 R0
+ 000009C2 4000 SHLL R0
+ 000009C4 303C ADD R3,R0
+ 000009C6 4008 SHLL2 R0
+ 000009C8 63C3 MOV R12,R3
+ 000009CA 4200 SHLL R2
+ 000009CC 323C ADD R3,R2
+ 000009CE 4208 SHLL2 R2
+ 000009D0 53F2 MOV.L @(8,R15),R3
+ 000009D2 301C ADD R1,R0
+ 000009D4 302C ADD R2,R0
+ 000009D6 003E MOV.L @(R0,R3),R0
+ 000009D8 8801 CMP/EQ #1,R0
+ 000009DA 8B66 BF L596
+ 000009DC D252 MOV.L L776+6,R2 ; _ypos
+ 000009DE 6022 MOV.L @R2,R0
+ 000009E0 30C8 SUB R12,R0
+ 000009E2 70FE ADD #-2,R0
+ 000009E4 4011 CMP/PZ R0
+ 000009E6 8B60 BF L596
+ draw.c 245 {
+ draw.c 246 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 000009E8 63F2 MOV.L @R15,R3
+ 000009EA 6252 MOV.L @R5,R2
+ 000009EC 3238 SUB R3,R2
+ 000009EE 72FE ADD #-2,R2
+ 000009F0 4211 CMP/PZ R2
+ 000009F2 8F0A BF/S L598
+ 000009F4 1F21 MOV.L R2,@(4,R15)
+ 000009F6 E009 MOV #9,R0
+ 000009F8 3207 CMP/GT R0,R2
+ 000009FA 8906 BT L598
+ 000009FC D04A MOV.L L776+6,R0 ; _ypos
+ 000009FE 6102 MOV.L @R0,R1
+ 00000A00 31C8 SUB R12,R1
+ 00000A02 71FE ADD #-2,R1
+ 00000A04 E014 MOV #20,R0
+ 00000A06 3107 CMP/GT R0,R1
+ 00000A08 8B01 BF L597
+ 00000A0A L598:
+ draw.c 247 {
+ draw.c 248 fit = False;
+ 00000A0A A04E BRA L596
+ 00000A0C 6D43 MOV R4,R13
+ 00000A0E L597:
+ draw.c 249 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 30
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 250 else
+ draw.c 251 {
+ draw.c 252 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +3;
+ 00000A0E 6062 MOV.L @R6,R0
+ 00000A10 6252 MOV.L @R5,R2
+ 00000A12 30C8 SUB R12,R0
+ 00000A14 70FE ADD #-2,R0
+ 00000A16 6303 MOV R0,R3
+ 00000A18 4008 SHLL2 R0
+ 00000A1A 303C ADD R3,R0
+ 00000A1C 63F2 MOV.L @R15,R3
+ 00000A1E 4000 SHLL R0
+ 00000A20 308C ADD R8,R0
+ 00000A22 3238 SUB R3,R2
+ 00000A24 72FE ADD #-2,R2
+ 00000A26 02E4 MOV.B R14,@(R0,R2)
+ draw.c 253 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000A28 6062 MOV.L @R6,R0
+ 00000A2A 30C8 SUB R12,R0
+ 00000A2C 70FE ADD #-2,R0
+ 00000A2E 6303 MOV R0,R3
+ 00000A30 1F01 MOV.L R0,@(4,R15)
+ 00000A32 4008 SHLL2 R0
+ 00000A34 6252 MOV.L @R5,R2
+ 00000A36 303C ADD R3,R0
+ 00000A38 63F2 MOV.L @R15,R3
+ 00000A3A 4000 SHLL R0
+ 00000A3C 307C ADD R7,R0
+ 00000A3E 3238 SUB R3,R2
+ 00000A40 72FE ADD #-2,R2
+ 00000A42 002C MOV.B @(R0,R2),R0
+ 00000A44 2008 TST R0,R0
+ 00000A46 8B03 BF L601
+ 00000A48 52F1 MOV.L @(4,R15),R2
+ 00000A4A E114 MOV #20,R1
+ 00000A4C 3213 CMP/GE R1,R2
+ 00000A4E 8B00 BF L600
+ 00000A50 L601:
+ draw.c 254 {
+ draw.c 255 fit = False;
+ 00000A50 6D43 MOV R4,R13
+ 00000A52 L600:
+ draw.c 256 }
+ draw.c 257 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000A52 6062 MOV.L @R6,R0
+ 00000A54 6252 MOV.L @R5,R2
+ 00000A56 30C8 SUB R12,R0
+ 00000A58 70FE ADD #-2,R0
+ 00000A5A 6303 MOV R0,R3
+ 00000A5C 4008 SHLL2 R0
+ 00000A5E 303C ADD R3,R0
+ 00000A60 63F2 MOV.L @R15,R3
+ 00000A62 4000 SHLL R0
+ 00000A64 307C ADD R7,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 31
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000A66 3238 SUB R3,R2
+ 00000A68 1F21 MOV.L R2,@(4,R15)
+ 00000A6A 72FD ADD #-3,R2
+ 00000A6C 002C MOV.B @(R0,R2),R0
+ 00000A6E 2008 TST R0,R0
+ 00000A70 8B04 BF L603
+ 00000A72 E201 MOV #1,R2
+ 00000A74 51F1 MOV.L @(4,R15),R1
+ 00000A76 71FE ADD #-2,R1
+ 00000A78 3123 CMP/GE R2,R1
+ 00000A7A 8900 BT L602
+ 00000A7C L603:
+ draw.c 258 {
+ draw.c 259 right = False;
+ 00000A7C 2A40 MOV.B R4,@R10
+ 00000A7E L602:
+ draw.c 260 }
+ draw.c 261 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 00000A7E 6062 MOV.L @R6,R0
+ 00000A80 6252 MOV.L @R5,R2
+ 00000A82 30C8 SUB R12,R0
+ 00000A84 70FE ADD #-2,R0
+ 00000A86 6303 MOV R0,R3
+ 00000A88 4008 SHLL2 R0
+ 00000A8A 303C ADD R3,R0
+ 00000A8C 63F2 MOV.L @R15,R3
+ 00000A8E 4000 SHLL R0
+ 00000A90 307C ADD R7,R0
+ 00000A92 3238 SUB R3,R2
+ 00000A94 1F21 MOV.L R2,@(4,R15)
+ 00000A96 72FF ADD #-1,R2
+ 00000A98 002C MOV.B @(R0,R2),R0
+ 00000A9A 2008 TST R0,R0
+ 00000A9C 8B04 BF L605
+ 00000A9E E208 MOV #8,R2
+ 00000AA0 51F1 MOV.L @(4,R15),R1
+ 00000AA2 71FE ADD #-2,R1
+ 00000AA4 3127 CMP/GT R2,R1
+ 00000AA6 8B00 BF L596
+ 00000AA8 L605:
+ draw.c 262 {
+ draw.c 263 left = False;
+ 00000AA8 2B40 MOV.B R4,@R11
+ 00000AAA L596:
+ 00000AAA 7C01 ADD #1,R12
+ 00000AAC 3CE3 CMP/GE R14,R12
+ 00000AAE 8B83 BF L595
+ 00000AB0 62F2 MOV.L @R15,R2
+ 00000AB2 7201 ADD #1,R2
+ 00000AB4 32E3 CMP/GE R14,R2
+ 00000AB6 8D02 BT/S L777
+ 00000AB8 2F22 MOV.L R2,@R15
+ 00000ABA AF79 BRA L594
+ 00000ABC 0009 NOP
+ 00000ABE L777:
+ draw.c 264 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 32
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 265 }
+ draw.c 266 }
+ draw.c 267 }
+ draw.c 268 }
+ draw.c 269 break;
+ 00000ABE A239 BRA L538
+ 00000AC0 0009 NOP
+ 00000AC2 L478: ; case label
+ draw.c 270 case 4:
+ draw.c 271 for(xcount = 0; xcount < 3; xcount ++)
+ 00000AC2 2F42 MOV.L R4,@R15
+ 00000AC4 L606:
+ 00000AC4 63F2 MOV.L @R15,R3
+ draw.c 272 {
+ draw.c 273 for(ycount = 0; ycount < 3; ycount ++)
+ 00000AC6 6C43 MOV R4,R12
+ 00000AC8 4308 SHLL2 R3
+ 00000ACA 1F32 MOV.L R3,@(8,R15)
+ 00000ACC L607:
+ draw.c 274 {
+ draw.c 275 if(blockJ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 00000ACC 6090 MOV.B @R9,R0
+ 00000ACE 62C3 MOV R12,R2
+ 00000AD0 D116 MOV.L L776+10,R1 ; _blockJ
+ 00000AD2 6303 MOV R0,R3
+ 00000AD4 4008 SHLL2 R0
+ 00000AD6 4000 SHLL R0
+ 00000AD8 303C ADD R3,R0
+ 00000ADA 4008 SHLL2 R0
+ 00000ADC 63C3 MOV R12,R3
+ 00000ADE 4200 SHLL R2
+ 00000AE0 323C ADD R3,R2
+ 00000AE2 4208 SHLL2 R2
+ 00000AE4 53F2 MOV.L @(8,R15),R3
+ 00000AE6 301C ADD R1,R0
+ 00000AE8 302C ADD R2,R0
+ 00000AEA 003E MOV.L @(R0,R3),R0
+ 00000AEC 8801 CMP/EQ #1,R0
+ 00000AEE 8B6E BF L608
+ 00000AF0 D20D MOV.L L776+6,R2 ; _ypos
+ 00000AF2 6022 MOV.L @R2,R0
+ 00000AF4 30C8 SUB R12,R0
+ 00000AF6 70FE ADD #-2,R0
+ 00000AF8 4011 CMP/PZ R0
+ 00000AFA 8B68 BF L608
+ draw.c 276 {
+ draw.c 277 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 00000AFC 63F2 MOV.L @R15,R3
+ 00000AFE 6252 MOV.L @R5,R2
+ 00000B00 3238 SUB R3,R2
+ 00000B02 72FE ADD #-2,R2
+ 00000B04 4211 CMP/PZ R2
+ 00000B06 8F0A BF/S L610
+ 00000B08 1F21 MOV.L R2,@(4,R15)
+ 00000B0A E009 MOV #9,R0
+ 00000B0C 3207 CMP/GT R0,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 33
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000B0E 8906 BT L610
+ 00000B10 D005 MOV.L L776+6,R0 ; _ypos
+ 00000B12 6102 MOV.L @R0,R1
+ 00000B14 31C8 SUB R12,R1
+ 00000B16 71FE ADD #-2,R1
+ 00000B18 E014 MOV #20,R0
+ 00000B1A 3107 CMP/GT R0,R1
+ 00000B1C 8B08 BF L609
+ 00000B1E L610:
+ draw.c 278 {
+ draw.c 279 fit = False;
+ 00000B1E A056 BRA L608
+ 00000B20 6D43 MOV R4,R13
+ 00000B22 L776:
+ 00000B22 0000 .DATA.W 0
+ 00000B24 <00000000> .DATA.L _blockT
+ 00000B28 <00000000> .DATA.L _ypos
+ 00000B2C <00000000> .DATA.L _blockJ
+ 00000B30 L609:
+ draw.c 280 }
+ draw.c 281 else
+ draw.c 282 {
+ draw.c 283 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +4;
+ 00000B30 6062 MOV.L @R6,R0
+ 00000B32 E104 MOV #4,R1
+ 00000B34 6252 MOV.L @R5,R2
+ 00000B36 30C8 SUB R12,R0
+ 00000B38 70FE ADD #-2,R0
+ 00000B3A 6303 MOV R0,R3
+ 00000B3C 4008 SHLL2 R0
+ 00000B3E 303C ADD R3,R0
+ 00000B40 63F2 MOV.L @R15,R3
+ 00000B42 4000 SHLL R0
+ 00000B44 308C ADD R8,R0
+ 00000B46 3238 SUB R3,R2
+ 00000B48 72FE ADD #-2,R2
+ 00000B4A 0214 MOV.B R1,@(R0,R2)
+ draw.c 284 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000B4C 6062 MOV.L @R6,R0
+ 00000B4E 30C8 SUB R12,R0
+ 00000B50 70FE ADD #-2,R0
+ 00000B52 6303 MOV R0,R3
+ 00000B54 1F01 MOV.L R0,@(4,R15)
+ 00000B56 4008 SHLL2 R0
+ 00000B58 6252 MOV.L @R5,R2
+ 00000B5A 303C ADD R3,R0
+ 00000B5C 63F2 MOV.L @R15,R3
+ 00000B5E 4000 SHLL R0
+ 00000B60 307C ADD R7,R0
+ 00000B62 3238 SUB R3,R2
+ 00000B64 72FE ADD #-2,R2
+ 00000B66 002C MOV.B @(R0,R2),R0
+ 00000B68 2008 TST R0,R0
+ 00000B6A 8B03 BF L613
+ 00000B6C 52F1 MOV.L @(4,R15),R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 34
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000B6E E114 MOV #20,R1
+ 00000B70 3213 CMP/GE R1,R2
+ 00000B72 8B00 BF L612
+ 00000B74 L613:
+ draw.c 285 {
+ draw.c 286 fit = False;
+ 00000B74 6D43 MOV R4,R13
+ 00000B76 L612:
+ draw.c 287 }
+ draw.c 288 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000B76 6062 MOV.L @R6,R0
+ 00000B78 6252 MOV.L @R5,R2
+ 00000B7A 30C8 SUB R12,R0
+ 00000B7C 70FE ADD #-2,R0
+ 00000B7E 6303 MOV R0,R3
+ 00000B80 4008 SHLL2 R0
+ 00000B82 303C ADD R3,R0
+ 00000B84 63F2 MOV.L @R15,R3
+ 00000B86 4000 SHLL R0
+ 00000B88 307C ADD R7,R0
+ 00000B8A 3238 SUB R3,R2
+ 00000B8C 1F21 MOV.L R2,@(4,R15)
+ 00000B8E 72FD ADD #-3,R2
+ 00000B90 002C MOV.B @(R0,R2),R0
+ 00000B92 2008 TST R0,R0
+ 00000B94 8B04 BF L615
+ 00000B96 E201 MOV #1,R2
+ 00000B98 51F1 MOV.L @(4,R15),R1
+ 00000B9A 71FE ADD #-2,R1
+ 00000B9C 3123 CMP/GE R2,R1
+ 00000B9E 8900 BT L614
+ 00000BA0 L615:
+ draw.c 289 {
+ draw.c 290 right = False;
+ 00000BA0 2A40 MOV.B R4,@R10
+ 00000BA2 L614:
+ draw.c 291 }
+ draw.c 292 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 00000BA2 6062 MOV.L @R6,R0
+ 00000BA4 6252 MOV.L @R5,R2
+ 00000BA6 30C8 SUB R12,R0
+ 00000BA8 70FE ADD #-2,R0
+ 00000BAA 6303 MOV R0,R3
+ 00000BAC 4008 SHLL2 R0
+ 00000BAE 303C ADD R3,R0
+ 00000BB0 63F2 MOV.L @R15,R3
+ 00000BB2 4000 SHLL R0
+ 00000BB4 307C ADD R7,R0
+ 00000BB6 3238 SUB R3,R2
+ 00000BB8 1F21 MOV.L R2,@(4,R15)
+ 00000BBA 72FF ADD #-1,R2
+ 00000BBC 002C MOV.B @(R0,R2),R0
+ 00000BBE 2008 TST R0,R0
+ 00000BC0 8B04 BF L617
+ 00000BC2 E208 MOV #8,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 35
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000BC4 51F1 MOV.L @(4,R15),R1
+ 00000BC6 71FE ADD #-2,R1
+ 00000BC8 3127 CMP/GT R2,R1
+ 00000BCA 8B00 BF L608
+ 00000BCC L617:
+ draw.c 293 {
+ draw.c 294 left = False;
+ 00000BCC 2B40 MOV.B R4,@R11
+ 00000BCE L608:
+ 00000BCE 7C01 ADD #1,R12
+ 00000BD0 3CE3 CMP/GE R14,R12
+ 00000BD2 8901 BT L778
+ 00000BD4 AF7A BRA L607
+ 00000BD6 0009 NOP
+ 00000BD8 L778:
+ 00000BD8 62F2 MOV.L @R15,R2
+ 00000BDA 7201 ADD #1,R2
+ 00000BDC 32E3 CMP/GE R14,R2
+ 00000BDE 8D02 BT/S L779
+ 00000BE0 2F22 MOV.L R2,@R15
+ 00000BE2 AF6F BRA L606
+ 00000BE4 0009 NOP
+ 00000BE6 L779:
+ draw.c 295 }
+ draw.c 296 }
+ draw.c 297 }
+ draw.c 298 }
+ draw.c 299 }
+ draw.c 300 break;
+ 00000BE6 A1A5 BRA L538
+ 00000BE8 0009 NOP
+ 00000BEA L479: ; case label
+ draw.c 301 case 5:
+ draw.c 302 for(xcount = 0; xcount < 3; xcount ++)
+ 00000BEA 2F42 MOV.L R4,@R15
+ 00000BEC L618:
+ 00000BEC 63F2 MOV.L @R15,R3
+ draw.c 303 {
+ draw.c 304 for(ycount = 0; ycount < 3; ycount ++)
+ 00000BEE 6C43 MOV R4,R12
+ 00000BF0 4308 SHLL2 R3
+ 00000BF2 1F32 MOV.L R3,@(8,R15)
+ 00000BF4 L619:
+ draw.c 305 {
+ draw.c 306 if(blockL[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 00000BF4 6090 MOV.B @R9,R0
+ 00000BF6 62C3 MOV R12,R2
+ 00000BF8 D159 MOV.L L780,R1 ; _blockL
+ 00000BFA 6303 MOV R0,R3
+ 00000BFC 4008 SHLL2 R0
+ 00000BFE 4000 SHLL R0
+ 00000C00 303C ADD R3,R0
+ 00000C02 4008 SHLL2 R0
+ 00000C04 63C3 MOV R12,R3
+ 00000C06 4200 SHLL R2
+ 00000C08 323C ADD R3,R2
+ 00000C0A 4208 SHLL2 R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 36
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000C0C 53F2 MOV.L @(8,R15),R3
+ 00000C0E 301C ADD R1,R0
+ 00000C10 302C ADD R2,R0
+ 00000C12 003E MOV.L @(R0,R3),R0
+ 00000C14 8801 CMP/EQ #1,R0
+ 00000C16 8B67 BF L620
+ 00000C18 D252 MOV.L L780+4,R2 ; _ypos
+ 00000C1A 6022 MOV.L @R2,R0
+ 00000C1C 30C8 SUB R12,R0
+ 00000C1E 70FE ADD #-2,R0
+ 00000C20 4011 CMP/PZ R0
+ 00000C22 8B61 BF L620
+ draw.c 307 {
+ draw.c 308 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 00000C24 63F2 MOV.L @R15,R3
+ 00000C26 6252 MOV.L @R5,R2
+ 00000C28 3238 SUB R3,R2
+ 00000C2A 72FE ADD #-2,R2
+ 00000C2C 4211 CMP/PZ R2
+ 00000C2E 8F0A BF/S L622
+ 00000C30 1F21 MOV.L R2,@(4,R15)
+ 00000C32 E009 MOV #9,R0
+ 00000C34 3207 CMP/GT R0,R2
+ 00000C36 8906 BT L622
+ 00000C38 D04A MOV.L L780+4,R0 ; _ypos
+ 00000C3A 6102 MOV.L @R0,R1
+ 00000C3C 31C8 SUB R12,R1
+ 00000C3E 71FE ADD #-2,R1
+ 00000C40 E014 MOV #20,R0
+ 00000C42 3107 CMP/GT R0,R1
+ 00000C44 8B01 BF L621
+ 00000C46 L622:
+ draw.c 309 {
+ draw.c 310 fit = False;
+ 00000C46 A04F BRA L620
+ 00000C48 6D43 MOV R4,R13
+ 00000C4A L621:
+ draw.c 311 }
+ draw.c 312 else
+ draw.c 313 {
+ draw.c 314 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +5;
+ 00000C4A E105 MOV #5,R1
+ 00000C4C 6062 MOV.L @R6,R0
+ 00000C4E 30C8 SUB R12,R0
+ 00000C50 6252 MOV.L @R5,R2
+ 00000C52 70FE ADD #-2,R0
+ 00000C54 6303 MOV R0,R3
+ 00000C56 4008 SHLL2 R0
+ 00000C58 303C ADD R3,R0
+ 00000C5A 4000 SHLL R0
+ 00000C5C 63F2 MOV.L @R15,R3
+ 00000C5E 308C ADD R8,R0
+ 00000C60 3238 SUB R3,R2
+ 00000C62 72FE ADD #-2,R2
+ 00000C64 0214 MOV.B R1,@(R0,R2)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 37
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 315 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000C66 6062 MOV.L @R6,R0
+ 00000C68 30C8 SUB R12,R0
+ 00000C6A 70FE ADD #-2,R0
+ 00000C6C 1F01 MOV.L R0,@(4,R15)
+ 00000C6E 6303 MOV R0,R3
+ 00000C70 6252 MOV.L @R5,R2
+ 00000C72 4008 SHLL2 R0
+ 00000C74 303C ADD R3,R0
+ 00000C76 4000 SHLL R0
+ 00000C78 63F2 MOV.L @R15,R3
+ 00000C7A 307C ADD R7,R0
+ 00000C7C 3238 SUB R3,R2
+ 00000C7E 72FE ADD #-2,R2
+ 00000C80 002C MOV.B @(R0,R2),R0
+ 00000C82 2008 TST R0,R0
+ 00000C84 8B03 BF L625
+ 00000C86 E114 MOV #20,R1
+ 00000C88 52F1 MOV.L @(4,R15),R2
+ 00000C8A 3213 CMP/GE R1,R2
+ 00000C8C 8B00 BF L624
+ 00000C8E L625:
+ draw.c 316 {
+ draw.c 317 fit = False;
+ 00000C8E 6D43 MOV R4,R13
+ 00000C90 L624:
+ draw.c 318 }
+ draw.c 319 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000C90 6062 MOV.L @R6,R0
+ 00000C92 30C8 SUB R12,R0
+ 00000C94 6252 MOV.L @R5,R2
+ 00000C96 70FE ADD #-2,R0
+ 00000C98 6303 MOV R0,R3
+ 00000C9A 4008 SHLL2 R0
+ 00000C9C 303C ADD R3,R0
+ 00000C9E 4000 SHLL R0
+ 00000CA0 63F2 MOV.L @R15,R3
+ 00000CA2 307C ADD R7,R0
+ 00000CA4 3238 SUB R3,R2
+ 00000CA6 1F21 MOV.L R2,@(4,R15)
+ 00000CA8 72FD ADD #-3,R2
+ 00000CAA 002C MOV.B @(R0,R2),R0
+ 00000CAC 2008 TST R0,R0
+ 00000CAE 8B04 BF L627
+ 00000CB0 51F1 MOV.L @(4,R15),R1
+ 00000CB2 E201 MOV #1,R2
+ 00000CB4 71FE ADD #-2,R1
+ 00000CB6 3123 CMP/GE R2,R1
+ 00000CB8 8900 BT L626
+ 00000CBA L627:
+ draw.c 320 {
+ draw.c 321 right = False;
+ 00000CBA 2A40 MOV.B R4,@R10
+ 00000CBC L626:
+ draw.c 322 }
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 38
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 323 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 00000CBC 6062 MOV.L @R6,R0
+ 00000CBE 30C8 SUB R12,R0
+ 00000CC0 6252 MOV.L @R5,R2
+ 00000CC2 70FE ADD #-2,R0
+ 00000CC4 6303 MOV R0,R3
+ 00000CC6 4008 SHLL2 R0
+ 00000CC8 303C ADD R3,R0
+ 00000CCA 4000 SHLL R0
+ 00000CCC 63F2 MOV.L @R15,R3
+ 00000CCE 307C ADD R7,R0
+ 00000CD0 3238 SUB R3,R2
+ 00000CD2 1F21 MOV.L R2,@(4,R15)
+ 00000CD4 72FF ADD #-1,R2
+ 00000CD6 002C MOV.B @(R0,R2),R0
+ 00000CD8 2008 TST R0,R0
+ 00000CDA 8B04 BF L629
+ 00000CDC 51F1 MOV.L @(4,R15),R1
+ 00000CDE E208 MOV #8,R2
+ 00000CE0 71FE ADD #-2,R1
+ 00000CE2 3127 CMP/GT R2,R1
+ 00000CE4 8B00 BF L620
+ 00000CE6 L629:
+ draw.c 324 {
+ draw.c 325 left = False;
+ 00000CE6 2B40 MOV.B R4,@R11
+ 00000CE8 L620:
+ 00000CE8 7C01 ADD #1,R12
+ 00000CEA 3CE3 CMP/GE R14,R12
+ 00000CEC 8B82 BF L619
+ 00000CEE 62F2 MOV.L @R15,R2
+ 00000CF0 7201 ADD #1,R2
+ 00000CF2 32E3 CMP/GE R14,R2
+ 00000CF4 8D02 BT/S L781
+ 00000CF6 2F22 MOV.L R2,@R15
+ 00000CF8 AF78 BRA L618
+ 00000CFA 0009 NOP
+ 00000CFC L781:
+ draw.c 326 }
+ draw.c 327 }
+ draw.c 328 }
+ draw.c 329 }
+ draw.c 330 }
+ draw.c 331 break;
+ 00000CFC A11A BRA L538
+ 00000CFE 0009 NOP
+ 00000D00 L480: ; case label
+ draw.c 332 case 6:
+ draw.c 333 for(xcount = 0; xcount < 3; xcount ++)
+ 00000D00 2F42 MOV.L R4,@R15
+ 00000D02 L630:
+ draw.c 334 {
+ draw.c 335 for(ycount = 0; ycount < 3; ycount ++)
+ 00000D02 6C43 MOV R4,R12
+ 00000D04 63F2 MOV.L @R15,R3
+ 00000D06 4308 SHLL2 R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 39
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000D08 1F32 MOV.L R3,@(8,R15)
+ 00000D0A L631:
+ draw.c 336 {
+ draw.c 337 if(blockZ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 00000D0A 62C3 MOV R12,R2
+ 00000D0C D116 MOV.L L780+8,R1 ; _blockZ
+ 00000D0E 6090 MOV.B @R9,R0
+ 00000D10 6303 MOV R0,R3
+ 00000D12 4008 SHLL2 R0
+ 00000D14 4000 SHLL R0
+ 00000D16 303C ADD R3,R0
+ 00000D18 4008 SHLL2 R0
+ 00000D1A 63C3 MOV R12,R3
+ 00000D1C 4200 SHLL R2
+ 00000D1E 323C ADD R3,R2
+ 00000D20 53F2 MOV.L @(8,R15),R3
+ 00000D22 4208 SHLL2 R2
+ 00000D24 301C ADD R1,R0
+ 00000D26 302C ADD R2,R0
+ 00000D28 003E MOV.L @(R0,R3),R0
+ 00000D2A 8801 CMP/EQ #1,R0
+ 00000D2C 8B6D BF L632
+ 00000D2E D20D MOV.L L780+4,R2 ; _ypos
+ 00000D30 6022 MOV.L @R2,R0
+ 00000D32 30C8 SUB R12,R0
+ 00000D34 70FE ADD #-2,R0
+ 00000D36 4011 CMP/PZ R0
+ 00000D38 8B67 BF L632
+ draw.c 338 {
+ draw.c 339 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ 00000D3A 63F2 MOV.L @R15,R3
+ 00000D3C 6252 MOV.L @R5,R2
+ 00000D3E 3238 SUB R3,R2
+ 00000D40 72FE ADD #-2,R2
+ 00000D42 4211 CMP/PZ R2
+ 00000D44 8F0A BF/S L634
+ 00000D46 1F21 MOV.L R2,@(4,R15)
+ 00000D48 E009 MOV #9,R0
+ 00000D4A 3207 CMP/GT R0,R2
+ 00000D4C 8906 BT L634
+ 00000D4E D005 MOV.L L780+4,R0 ; _ypos
+ 00000D50 6102 MOV.L @R0,R1
+ 00000D52 E014 MOV #20,R0
+ 00000D54 31C8 SUB R12,R1
+ 00000D56 71FE ADD #-2,R1
+ 00000D58 3107 CMP/GT R0,R1
+ 00000D5A 8B07 BF L633
+ 00000D5C L634:
+ draw.c 340 {
+ draw.c 341 fit = False;
+ 00000D5C A055 BRA L632
+ 00000D5E 6D43 MOV R4,R13
+ 00000D60 L780:
+ 00000D60 <00000000> .DATA.L _blockL
+ 00000D64 <00000000> .DATA.L _ypos
+ 00000D68 <00000000> .DATA.L _blockZ
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 40
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000D6C L633:
+ draw.c 342 }
+ draw.c 343 else
+ draw.c 344 {
+ draw.c 345 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +6;
+ 00000D6C 6062 MOV.L @R6,R0
+ 00000D6E E106 MOV #6,R1
+ 00000D70 6252 MOV.L @R5,R2
+ 00000D72 30C8 SUB R12,R0
+ 00000D74 70FE ADD #-2,R0
+ 00000D76 6303 MOV R0,R3
+ 00000D78 4008 SHLL2 R0
+ 00000D7A 303C ADD R3,R0
+ 00000D7C 63F2 MOV.L @R15,R3
+ 00000D7E 4000 SHLL R0
+ 00000D80 308C ADD R8,R0
+ 00000D82 3238 SUB R3,R2
+ 00000D84 72FE ADD #-2,R2
+ 00000D86 0214 MOV.B R1,@(R0,R2)
+ draw.c 346 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000D88 6062 MOV.L @R6,R0
+ 00000D8A 30C8 SUB R12,R0
+ 00000D8C 70FE ADD #-2,R0
+ 00000D8E 6303 MOV R0,R3
+ 00000D90 1F01 MOV.L R0,@(4,R15)
+ 00000D92 4008 SHLL2 R0
+ 00000D94 6252 MOV.L @R5,R2
+ 00000D96 303C ADD R3,R0
+ 00000D98 63F2 MOV.L @R15,R3
+ 00000D9A 4000 SHLL R0
+ 00000D9C 307C ADD R7,R0
+ 00000D9E 3238 SUB R3,R2
+ 00000DA0 72FE ADD #-2,R2
+ 00000DA2 002C MOV.B @(R0,R2),R0
+ 00000DA4 2008 TST R0,R0
+ 00000DA6 8B03 BF L637
+ 00000DA8 52F1 MOV.L @(4,R15),R2
+ 00000DAA E114 MOV #20,R1
+ 00000DAC 3213 CMP/GE R1,R2
+ 00000DAE 8B00 BF L636
+ 00000DB0 L637:
+ draw.c 347 {
+ draw.c 348 fit = False;
+ 00000DB0 6D43 MOV R4,R13
+ 00000DB2 L636:
+ draw.c 349 }
+ draw.c 350 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000DB2 6062 MOV.L @R6,R0
+ 00000DB4 6252 MOV.L @R5,R2
+ 00000DB6 30C8 SUB R12,R0
+ 00000DB8 70FE ADD #-2,R0
+ 00000DBA 6303 MOV R0,R3
+ 00000DBC 4008 SHLL2 R0
+ 00000DBE 303C ADD R3,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 41
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000DC0 63F2 MOV.L @R15,R3
+ 00000DC2 4000 SHLL R0
+ 00000DC4 307C ADD R7,R0
+ 00000DC6 3238 SUB R3,R2
+ 00000DC8 1F21 MOV.L R2,@(4,R15)
+ 00000DCA 72FD ADD #-3,R2
+ 00000DCC 002C MOV.B @(R0,R2),R0
+ 00000DCE 2008 TST R0,R0
+ 00000DD0 8B04 BF L639
+ 00000DD2 E201 MOV #1,R2
+ 00000DD4 51F1 MOV.L @(4,R15),R1
+ 00000DD6 71FE ADD #-2,R1
+ 00000DD8 3123 CMP/GE R2,R1
+ 00000DDA 8900 BT L638
+ 00000DDC L639:
+ draw.c 351 {
+ draw.c 352 right = False;
+ 00000DDC 2A40 MOV.B R4,@R10
+ 00000DDE L638:
+ draw.c 353 }
+ draw.c 354 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 00000DDE 6062 MOV.L @R6,R0
+ 00000DE0 6252 MOV.L @R5,R2
+ 00000DE2 30C8 SUB R12,R0
+ 00000DE4 70FE ADD #-2,R0
+ 00000DE6 6303 MOV R0,R3
+ 00000DE8 4008 SHLL2 R0
+ 00000DEA 303C ADD R3,R0
+ 00000DEC 63F2 MOV.L @R15,R3
+ 00000DEE 4000 SHLL R0
+ 00000DF0 307C ADD R7,R0
+ 00000DF2 3238 SUB R3,R2
+ 00000DF4 1F21 MOV.L R2,@(4,R15)
+ 00000DF6 72FF ADD #-1,R2
+ 00000DF8 002C MOV.B @(R0,R2),R0
+ 00000DFA 2008 TST R0,R0
+ 00000DFC 8B04 BF L641
+ 00000DFE E208 MOV #8,R2
+ 00000E00 51F1 MOV.L @(4,R15),R1
+ 00000E02 71FE ADD #-2,R1
+ 00000E04 3127 CMP/GT R2,R1
+ 00000E06 8B00 BF L632
+ 00000E08 L641:
+ draw.c 355 {
+ draw.c 356 left = False;
+ 00000E08 2B40 MOV.B R4,@R11
+ 00000E0A L632:
+ 00000E0A 7C01 ADD #1,R12
+ 00000E0C 3CE3 CMP/GE R14,R12
+ 00000E0E 8901 BT L782
+ 00000E10 AF7B BRA L631
+ 00000E12 0009 NOP
+ 00000E14 L782:
+ 00000E14 62F2 MOV.L @R15,R2
+ 00000E16 7201 ADD #1,R2
+ 00000E18 32E3 CMP/GE R14,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 42
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000E1A 8D02 BT/S L783
+ 00000E1C 2F22 MOV.L R2,@R15
+ 00000E1E AF70 BRA L630
+ 00000E20 0009 NOP
+ 00000E22 L783:
+ draw.c 357 }
+ draw.c 358 }
+ draw.c 359 }
+ draw.c 360 }
+ draw.c 361 }
+ draw.c 362 break;
+ 00000E22 A087 BRA L538
+ 00000E24 0009 NOP
+ 00000E26 L481: ; case label
+ draw.c 363 case 7:
+ draw.c 364 for(xcount = 0; xcount < 3; xcount ++)
+ 00000E26 2F42 MOV.L R4,@R15
+ 00000E28 L642:
+ 00000E28 63F2 MOV.L @R15,R3
+ draw.c 365 {
+ draw.c 366 for(ycount = 0; ycount < 3; ycount ++)
+ 00000E2A 6C43 MOV R4,R12
+ 00000E2C 4308 SHLL2 R3
+ 00000E2E 1F32 MOV.L R3,@(8,R15)
+ 00000E30 L643:
+ draw.c 367 {
+ draw.c 368 if(blockS[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ 00000E30 6090 MOV.B @R9,R0
+ 00000E32 62C3 MOV R12,R2
+ 00000E34 D145 MOV.L L784+2,R1 ; _blockS
+ 00000E36 6303 MOV R0,R3
+ 00000E38 4008 SHLL2 R0
+ 00000E3A 4000 SHLL R0
+ 00000E3C 303C ADD R3,R0
+ 00000E3E 4008 SHLL2 R0
+ 00000E40 63C3 MOV R12,R3
+ 00000E42 4200 SHLL R2
+ 00000E44 323C ADD R3,R2
+ 00000E46 4208 SHLL2 R2
+ 00000E48 53F2 MOV.L @(8,R15),R3
+ 00000E4A 301C ADD R1,R0
+ 00000E4C 302C ADD R2,R0
+ 00000E4E 003E MOV.L @(R0,R3),R0
+ 00000E50 8801 CMP/EQ #1,R0
+ 00000E52 8B65 BF L644
+ 00000E54 D23E MOV.L L784+6,R2 ; _ypos
+ 00000E56 6022 MOV.L @R2,R0
+ 00000E58 30C8 SUB R12,R0
+ 00000E5A 70FE ADD #-2,R0
+ 00000E5C 4011 CMP/PZ R0
+ 00000E5E 8B5F BF L644
+ 00000E60 63F2 MOV.L @R15,R3
+ 00000E62 6252 MOV.L @R5,R2
+ 00000E64 3238 SUB R3,R2
+ 00000E66 72FE ADD #-2,R2
+ 00000E68 1F21 MOV.L R2,@(4,R15)
+ 00000E6A 4211 CMP/PZ R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 43
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000E6C 8B0A BF L646
+ 00000E6E E109 MOV #9,R1
+ 00000E70 52F1 MOV.L @(4,R15),R2
+ 00000E72 3217 CMP/GT R1,R2
+ 00000E74 8906 BT L646
+ 00000E76 E014 MOV #20,R0
+ 00000E78 D135 MOV.L L784+6,R1 ; _ypos
+ 00000E7A 6212 MOV.L @R1,R2
+ 00000E7C 32C8 SUB R12,R2
+ 00000E7E 72FE ADD #-2,R2
+ 00000E80 3207 CMP/GT R0,R2
+ 00000E82 8B01 BF L645
+ 00000E84 L646:
+ draw.c 369 {
+ draw.c 370 if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos
+ +- ycount - 2 > 20)
+ draw.c 371 {
+ draw.c 372 fit = False;
+ 00000E84 A04C BRA L644
+ 00000E86 6D43 MOV R4,R13
+ 00000E88 L645:
+ draw.c 373 }
+ draw.c 374 else
+ draw.c 375 {
+ draw.c 376 changemap[ypos - ycount - 2][xpos - xcount - 2] =
+ +7;
+ 00000E88 6062 MOV.L @R6,R0
+ 00000E8A 30C8 SUB R12,R0
+ 00000E8C 52F1 MOV.L @(4,R15),R2
+ 00000E8E 70FE ADD #-2,R0
+ 00000E90 6303 MOV R0,R3
+ 00000E92 4008 SHLL2 R0
+ 00000E94 303C ADD R3,R0
+ 00000E96 4000 SHLL R0
+ 00000E98 308C ADD R8,R0
+ 00000E9A E307 MOV #7,R3
+ 00000E9C 0234 MOV.B R3,@(R0,R2)
+ draw.c 377 if(globalmap[ypos - ycount - 2][xpos - xcount - 2]
+ + != 0 || ypos - ycount - 2 >= 20)
+ 00000E9E 6062 MOV.L @R6,R0
+ 00000EA0 30C8 SUB R12,R0
+ 00000EA2 70FE ADD #-2,R0
+ 00000EA4 1F01 MOV.L R0,@(4,R15)
+ 00000EA6 6303 MOV R0,R3
+ 00000EA8 6252 MOV.L @R5,R2
+ 00000EAA 4008 SHLL2 R0
+ 00000EAC 303C ADD R3,R0
+ 00000EAE 4000 SHLL R0
+ 00000EB0 63F2 MOV.L @R15,R3
+ 00000EB2 307C ADD R7,R0
+ 00000EB4 3238 SUB R3,R2
+ 00000EB6 72FE ADD #-2,R2
+ 00000EB8 002C MOV.B @(R0,R2),R0
+ 00000EBA 2008 TST R0,R0
+ 00000EBC 8B03 BF L649
+ 00000EBE E114 MOV #20,R1
+ 00000EC0 52F1 MOV.L @(4,R15),R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 44
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000EC2 3213 CMP/GE R1,R2
+ 00000EC4 8B00 BF L648
+ 00000EC6 L649:
+ draw.c 378 {
+ draw.c 379 fit = False;
+ 00000EC6 6D43 MOV R4,R13
+ 00000EC8 L648:
+ draw.c 380 }
+ draw.c 381 if(globalmap[ypos - ycount - 2][xpos - xcount - 1
+ +- 2] != 0 || xpos - xcount - 2 < 1)
+ 00000EC8 6062 MOV.L @R6,R0
+ 00000ECA 30C8 SUB R12,R0
+ 00000ECC 6252 MOV.L @R5,R2
+ 00000ECE 70FE ADD #-2,R0
+ 00000ED0 6303 MOV R0,R3
+ 00000ED2 4008 SHLL2 R0
+ 00000ED4 303C ADD R3,R0
+ 00000ED6 4000 SHLL R0
+ 00000ED8 63F2 MOV.L @R15,R3
+ 00000EDA 307C ADD R7,R0
+ 00000EDC 3238 SUB R3,R2
+ 00000EDE 1F21 MOV.L R2,@(4,R15)
+ 00000EE0 72FD ADD #-3,R2
+ 00000EE2 002C MOV.B @(R0,R2),R0
+ 00000EE4 2008 TST R0,R0
+ 00000EE6 8B04 BF L651
+ 00000EE8 51F1 MOV.L @(4,R15),R1
+ 00000EEA E201 MOV #1,R2
+ 00000EEC 71FE ADD #-2,R1
+ 00000EEE 3123 CMP/GE R2,R1
+ 00000EF0 8900 BT L650
+ 00000EF2 L651:
+ draw.c 382 {
+ draw.c 383 right = False;
+ 00000EF2 2A40 MOV.B R4,@R10
+ 00000EF4 L650:
+ draw.c 384 }
+ draw.c 385 if(globalmap[ypos - ycount - 2][xpos - xcount + 1
+ +- 2] != 0 || xpos - xcount - 2 > 8)
+ 00000EF4 6062 MOV.L @R6,R0
+ 00000EF6 30C8 SUB R12,R0
+ 00000EF8 6252 MOV.L @R5,R2
+ 00000EFA 70FE ADD #-2,R0
+ 00000EFC 6303 MOV R0,R3
+ 00000EFE 4008 SHLL2 R0
+ 00000F00 303C ADD R3,R0
+ 00000F02 4000 SHLL R0
+ 00000F04 63F2 MOV.L @R15,R3
+ 00000F06 307C ADD R7,R0
+ 00000F08 3238 SUB R3,R2
+ 00000F0A 1F21 MOV.L R2,@(4,R15)
+ 00000F0C 72FF ADD #-1,R2
+ 00000F0E 002C MOV.B @(R0,R2),R0
+ 00000F10 2008 TST R0,R0
+ 00000F12 8B04 BF L653
+ 00000F14 51F1 MOV.L @(4,R15),R1
+ 00000F16 E208 MOV #8,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 45
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000F18 71FE ADD #-2,R1
+ 00000F1A 3127 CMP/GT R2,R1
+ 00000F1C 8B00 BF L644
+ 00000F1E L653:
+ draw.c 386 {
+ draw.c 387 left = False;
+ 00000F1E 2B40 MOV.B R4,@R11
+ 00000F20 L644:
+ 00000F20 7C01 ADD #1,R12
+ 00000F22 3CE3 CMP/GE R14,R12
+ 00000F24 8B84 BF L643
+ 00000F26 62F2 MOV.L @R15,R2
+ 00000F28 7201 ADD #1,R2
+ 00000F2A 32E3 CMP/GE R14,R2
+ 00000F2C 8D02 BT/S L785
+ 00000F2E 2F22 MOV.L R2,@R15
+ 00000F30 AF7A BRA L642
+ 00000F32 0009 NOP
+ 00000F34 L785:
+ 00000F34 L538:
+ draw.c 388 }
+ draw.c 389 }
+ draw.c 390 }
+ draw.c 391 }
+ draw.c 392 }
+ draw.c 393 break;
+ draw.c 394 }
+ draw.c 395 return fit;
+ 00000F34 60DE EXTS.B R13,R0
+ draw.c 396 }
+ 00000F36 7F0C ADD #12,R15
+ 00000F38 4F26 LDS.L @R15+,PR
+ 00000F3A 68F6 MOV.L @R15+,R8
+ 00000F3C 69F6 MOV.L @R15+,R9
+ 00000F3E 6AF6 MOV.L @R15+,R10
+ 00000F40 6BF6 MOV.L @R15+,R11
+ 00000F42 6CF6 MOV.L @R15+,R12
+ 00000F44 6DF6 MOV.L @R15+,R13
+ 00000F46 000B RTS
+ 00000F48 6EF6 MOV.L @R15+,R14
+ 00000F4A L784:
+ 00000F4A 0000 .DATA.W 0
+ 00000F4C <00000000> .DATA.L _blockS
+ 00000F50 <00000000> .DATA.L _ypos
+ draw.c 397
+ draw.c 398 void DrawBlock()
+ 00000F54 _DrawBlock: ; function: DrawBlock
+ ; frame size=80
+ ; used runtime library name:
+ ; __divls, __divlu, __modls, __modlu
+ 00000F54 2FE6 MOV.L R14,@-R15
+ 00000F56 2FD6 MOV.L R13,@-R15
+ 00000F58 2FC6 MOV.L R12,@-R15
+ 00000F5A 2FB6 MOV.L R11,@-R15
+ 00000F5C 2FA6 MOV.L R10,@-R15
+ 00000F5E 2F96 MOV.L R9,@-R15
+ 00000F60 2F86 MOV.L R8,@-R15
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 46
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000F62 4F22 STS.L PR,@-R15
+ draw.c 399 {
+ draw.c 400 int xcount, ycount;
+ draw.c 401
+ draw.c 402 clrbuffer(pScreen);
+ 00000F64 DE59 MOV.L L786+4,R14 ; _pScreen
+ 00000F66 7FF0 ADD #-16,R15
+ 00000F68 D359 MOV.L L786+8,R3 ; _clrbuffer
+ 00000F6A 430B JSR @R3
+ 00000F6C 64E2 MOV.L @R14,R4
+ draw.c 403
+ draw.c 404 drawNumber(pScreen, (int)(level / 10) % 10, 115, 39);
+ 00000F6E EA0A MOV #10,R10
+ 00000F70 D359 MOV.L L786+16,R3 ; __divls
+ 00000F72 E727 MOV #39,R7
+ 00000F74 DC57 MOV.L L786+12,R12; _level
+ 00000F76 E673 MOV #115,R6
+ 00000F78 61C0 MOV.B @R12,R1
+ 00000F7A 430B JSR @R3
+ 00000F7C 60A3 MOV R10,R0
+ 00000F7E 6103 MOV R0,R1
+ 00000F80 D256 MOV.L L786+20,R2 ; __modls
+ 00000F82 420B JSR @R2
+ 00000F84 60A3 MOV R10,R0
+ 00000F86 6503 MOV R0,R5
+ 00000F88 B987 BSR _drawNumber
+ 00000F8A 64E2 MOV.L @R14,R4
+ draw.c 405 drawNumber(pScreen, (int)(level / 10) % 100 / 10, 115, 43);
+ 00000F8C 61C0 MOV.B @R12,R1
+ 00000F8E EB64 MOV #100,R11
+ 00000F90 D351 MOV.L L786+16,R3 ; __divls
+ 00000F92 E72B MOV #43,R7
+ 00000F94 E673 MOV #115,R6
+ 00000F96 430B JSR @R3
+ 00000F98 60A3 MOV R10,R0
+ 00000F9A 6103 MOV R0,R1
+ 00000F9C D24F MOV.L L786+20,R2 ; __modls
+ 00000F9E 420B JSR @R2
+ 00000FA0 60B3 MOV R11,R0
+ 00000FA2 6103 MOV R0,R1
+ 00000FA4 D34C MOV.L L786+16,R3 ; __divls
+ 00000FA6 430B JSR @R3
+ 00000FA8 60A3 MOV R10,R0
+ 00000FAA 6503 MOV R0,R5
+ 00000FAC B975 BSR _drawNumber
+ 00000FAE 64E2 MOV.L @R14,R4
+ draw.c 406
+ draw.c 407 drawString(pScreen, &"LV", 2, 115, 59);
+ 00000FB0 D54B MOV.L L786+24,R5 ; L411
+ 00000FB2 E33B MOV #59,R3
+ 00000FB4 2F36 MOV.L R3,@-R15
+ 00000FB6 E773 MOV #115,R7
+ 00000FB8 E602 MOV #2,R6
+ 00000FBA B953 BSR _drawString
+ 00000FBC 64E2 MOV.L @R14,R4
+ draw.c 408
+ draw.c 409 drawNumber(pScreen, points % 10, 109, 39);
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 47
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000FBE E727 MOV #39,R7
+ 00000FC0 D349 MOV.L L786+32,R3 ; __modlu
+ 00000FC2 E66D MOV #109,R6
+ 00000FC4 DD47 MOV.L L786+28,R13; _points
+ 00000FC6 61D2 MOV.L @R13,R1
+ 00000FC8 430B JSR @R3
+ 00000FCA 60A3 MOV R10,R0
+ 00000FCC 6503 MOV R0,R5
+ 00000FCE B964 BSR _drawNumber
+ 00000FD0 64E2 MOV.L @R14,R4
+ draw.c 410 drawNumber(pScreen, points % 100 / 10, 109, 43);
+ 00000FD2 E72B MOV #43,R7
+ 00000FD4 61D2 MOV.L @R13,R1
+ 00000FD6 E66D MOV #109,R6
+ 00000FD8 D343 MOV.L L786+32,R3 ; __modlu
+ 00000FDA 430B JSR @R3
+ 00000FDC 60B3 MOV R11,R0
+ 00000FDE 6103 MOV R0,R1
+ 00000FE0 D242 MOV.L L786+36,R2 ; __divlu
+ 00000FE2 420B JSR @R2
+ 00000FE4 60A3 MOV R10,R0
+ 00000FE6 6503 MOV R0,R5
+ 00000FE8 B957 BSR _drawNumber
+ 00000FEA 64E2 MOV.L @R14,R4
+ draw.c 411 drawNumber(pScreen, points % 1000 / 100, 109, 47);
+ 00000FEC 996C MOV.W L786,R9 ; H'03E8
+ 00000FEE E72F MOV #47,R7
+ 00000FF0 61D2 MOV.L @R13,R1
+ 00000FF2 E66D MOV #109,R6
+ 00000FF4 D23C MOV.L L786+32,R2 ; __modlu
+ 00000FF6 420B JSR @R2
+ 00000FF8 6093 MOV R9,R0
+ 00000FFA 6103 MOV R0,R1
+ 00000FFC D33B MOV.L L786+36,R3 ; __divlu
+ 00000FFE 430B JSR @R3
+ 00001000 60B3 MOV R11,R0
+ 00001002 6503 MOV R0,R5
+ 00001004 B949 BSR _drawNumber
+ 00001006 64E2 MOV.L @R14,R4
+ draw.c 412 drawNumber(pScreen, points % 10000 / 1000, 109, 51);
+ 00001008 905F MOV.W L786+2,R0 ; H'2710
+ 0000100A E733 MOV #51,R7
+ 0000100C D336 MOV.L L786+32,R3 ; __modlu
+ 0000100E E66D MOV #109,R6
+ 00001010 430B JSR @R3
+ 00001012 61D2 MOV.L @R13,R1
+ 00001014 D235 MOV.L L786+36,R2 ; __divlu
+ 00001016 6103 MOV R0,R1
+ 00001018 420B JSR @R2
+ 0000101A 6093 MOV R9,R0
+ 0000101C 6503 MOV R0,R5
+ 0000101E B93C BSR _drawNumber
+ 00001020 64E2 MOV.L @R14,R4
+ draw.c 413 drawNumber(pScreen, points % 100000 / 10000, 109, 55);
+ 00001022 E737 MOV #55,R7
+ 00001024 D032 MOV.L L786+40,R0 ; H'000186A0
+ 00001026 E66D MOV #109,R6
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 48
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001028 D22F MOV.L L786+32,R2 ; __modlu
+ 0000102A 420B JSR @R2
+ 0000102C 61D2 MOV.L @R13,R1
+ 0000102E 6103 MOV R0,R1
+ 00001030 D32E MOV.L L786+36,R3 ; __divlu
+ 00001032 904A MOV.W L786+2,R0 ; H'2710
+ 00001034 430B JSR @R3
+ 00001036 0009 NOP
+ 00001038 6503 MOV R0,R5
+ 0000103A B92E BSR _drawNumber
+ 0000103C 64E2 MOV.L @R14,R4
+ draw.c 414 drawNumber(pScreen, points % 1000000 / 100000, 109, 59);
+ 0000103E E73B MOV #59,R7
+ 00001040 D02C MOV.L L786+44,R0 ; H'000F4240
+ 00001042 E66D MOV #109,R6
+ 00001044 D328 MOV.L L786+32,R3 ; __modlu
+ 00001046 430B JSR @R3
+ 00001048 61D2 MOV.L @R13,R1
+ 0000104A 6103 MOV R0,R1
+ 0000104C D227 MOV.L L786+36,R2 ; __divlu
+ 0000104E D028 MOV.L L786+40,R0 ; H'000186A0
+ 00001050 420B JSR @R2
+ 00001052 0009 NOP
+ 00001054 6503 MOV R0,R5
+ 00001056 B920 BSR _drawNumber
+ 00001058 64E2 MOV.L @R14,R4
+ draw.c 415 drawNumber(pScreen, points / 1000000, 109, 63);
+ 0000105A E73F MOV #63,R7
+ 0000105C D025 MOV.L L786+44,R0 ; H'000F4240
+ 0000105E E66D MOV #109,R6
+ 00001060 D222 MOV.L L786+36,R2 ; __divlu
+ 00001062 420B JSR @R2
+ 00001064 61D2 MOV.L @R13,R1
+ 00001066 6503 MOV R0,R5
+ 00001068 B917 BSR _drawNumber
+ 0000106A 64E2 MOV.L @R14,R4
+ draw.c 416
+ draw.c 417 drawString(pScreen, &"PTS", 3, 103, 51);
+ 0000106C D522 MOV.L L786+48,R5 ; L412
+ 0000106E E233 MOV #51,R2
+ 00001070 2F26 MOV.L R2,@-R15
+ 00001072 E767 MOV #103,R7
+ 00001074 E603 MOV #3,R6
+ 00001076 B8F5 BSR _drawString
+ 00001078 64E2 MOV.L @R14,R4
+ draw.c 418
+ draw.c 419 drawString(pScreen, &"LINE", 4, 121, 51);
+ 0000107A E233 MOV #51,R2
+ 0000107C D51F MOV.L L786+52,R5 ; L413
+ 0000107E E779 MOV #121,R7
+ 00001080 2F26 MOV.L R2,@-R15
+ 00001082 E604 MOV #4,R6
+ 00001084 B8EE BSR _drawString
+ 00001086 64E2 MOV.L @R14,R4
+ draw.c 420
+ draw.c 421 drawNumber(pScreen, level % 10, 121, 39);
+ 00001088 D314 MOV.L L786+20,R3 ; __modls
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 49
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000108A 7F0C ADD #12,R15
+ 0000108C 61C0 MOV.B @R12,R1
+ 0000108E E727 MOV #39,R7
+ 00001090 E679 MOV #121,R6
+ 00001092 430B JSR @R3
+ 00001094 60A3 MOV R10,R0
+ 00001096 6503 MOV R0,R5
+ 00001098 B8FF BSR _drawNumber
+ 0000109A 64E2 MOV.L @R14,R4
+ draw.c 422 drawNumber(pScreen, level % 100 / 10, 121, 43);
+ 0000109C 61C0 MOV.B @R12,R1
+ 0000109E E72B MOV #43,R7
+ 000010A0 D30E MOV.L L786+20,R3 ; __modls
+ 000010A2 E679 MOV #121,R6
+ 000010A4 430B JSR @R3
+ 000010A6 60B3 MOV R11,R0
+ 000010A8 D20B MOV.L L786+16,R2 ; __divls
+ 000010AA 6103 MOV R0,R1
+ 000010AC 420B JSR @R2
+ 000010AE 60A3 MOV R10,R0
+ 000010B0 6503 MOV R0,R5
+ 000010B2 B8F2 BSR _drawNumber
+ 000010B4 64E2 MOV.L @R14,R4
+ draw.c 423 drawNumber(pScreen, level % 1000 / 100, 121, 47);
+ 000010B6 E72F MOV #47,R7
+ 000010B8 61C0 MOV.B @R12,R1
+ 000010BA E679 MOV #121,R6
+ 000010BC D307 MOV.L L786+20,R3 ; __modls
+ 000010BE 430B JSR @R3
+ 000010C0 6093 MOV R9,R0
+ 000010C2 6103 MOV R0,R1
+ 000010C4 A01C BRA L761
+ 000010C6 60B3 MOV R11,R0
+ 000010C8 L786:
+ 000010C8 03E8 .DATA.W H'03E8
+ 000010CA 2710 .DATA.W H'2710
+ 000010CC <00000000> .DATA.L _pScreen
+ 000010D0 <00000000> .DATA.L _clrbuffer
+ 000010D4 <00000000> .DATA.L _level
+ 000010D8 <00000000> .DATA.L __divls
+ 000010DC <00000000> .DATA.L __modls
+ 000010E0 <00000000> .DATA.L L411
+ 000010E4 <00000000> .DATA.L _points
+ 000010E8 <00000000> .DATA.L __modlu
+ 000010EC <00000000> .DATA.L __divlu
+ 000010F0 000186A0 .DATA.L H'000186A0
+ 000010F4 000F4240 .DATA.L H'000F4240
+ 000010F8 <00000000> .DATA.L L412
+ 000010FC <00000000> .DATA.L L413
+ 00001100 L761:
+ 00001100 D283 MOV.L L787+2,R2 ; __divls
+ 00001102 420B JSR @R2
+ 00001104 0009 NOP
+ 00001106 6503 MOV R0,R5
+ 00001108 B8C7 BSR _drawNumber
+ 0000110A 64E2 MOV.L @R14,R4
+ draw.c 424
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 50
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 425 if(DrawSprite() == False)
+ 0000110C DB81 MOV.L L787+6,R11 ; _globalmap
+ 0000110E B990 BSR _DrawSprite
+ 00001110 E900 MOV #0,R9
+ 00001112 2008 TST R0,R0
+ 00001114 8B67 BF L655
+ draw.c 426 {
+ draw.c 427 for(ycount = 0; ycount < 20; ycount ++)
+ 00001116 6793 MOV R9,R7
+ 00001118 D57F MOV.L L787+10,R5 ; _changemap
+ 0000111A L656:
+ draw.c 428 {
+ draw.c 429 for(xcount = 0; xcount < 10; xcount ++)
+ 0000111A 6493 MOV R9,R4
+ 0000111C 6D73 MOV R7,R13
+ 0000111E 6373 MOV R7,R3
+ 00001120 4D08 SHLL2 R13
+ 00001122 3D3C ADD R3,R13
+ 00001124 4D00 SHLL R13
+ 00001126 66D3 MOV R13,R6
+ 00001128 365C ADD R5,R6
+ 0000112A L658:
+ draw.c 430 {
+ draw.c 431 if(changemap[ycount + 1][xcount] != 0)
+ 0000112A 6343 MOV R4,R3
+ 0000112C 336C ADD R6,R3
+ 0000112E 843A MOV.B @(10,R3),R0
+ 00001130 2008 TST R0,R0
+ 00001132 8908 BT L659
+ draw.c 432 {
+ draw.c 433 globalmap[ycount][xcount] = changemap[ycount + 1][xcount];
+ 00001134 60D3 MOV R13,R0
+ 00001136 30BC ADD R11,R0
+ 00001138 6203 MOV R0,R2
+ 0000113A 324C ADD R4,R2
+ 0000113C 63D3 MOV R13,R3
+ 0000113E 335C ADD R5,R3
+ 00001140 334C ADD R4,R3
+ 00001142 843A MOV.B @(10,R3),R0
+ 00001144 2200 MOV.B R0,@R2
+ 00001146 L659:
+ 00001146 7401 ADD #1,R4
+ 00001148 6343 MOV R4,R3
+ 0000114A 336C ADD R6,R3
+ 0000114C 843A MOV.B @(10,R3),R0
+ 0000114E 2008 TST R0,R0
+ 00001150 8908 BT L660
+ 00001152 60D3 MOV R13,R0
+ 00001154 30BC ADD R11,R0
+ 00001156 6203 MOV R0,R2
+ 00001158 324C ADD R4,R2
+ 0000115A 63D3 MOV R13,R3
+ 0000115C 335C ADD R5,R3
+ 0000115E 334C ADD R4,R3
+ 00001160 843A MOV.B @(10,R3),R0
+ 00001162 2200 MOV.B R0,@R2
+ 00001164 L660:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 51
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001164 7401 ADD #1,R4
+ 00001166 6343 MOV R4,R3
+ 00001168 336C ADD R6,R3
+ 0000116A 843A MOV.B @(10,R3),R0
+ 0000116C 2008 TST R0,R0
+ 0000116E 8908 BT L661
+ 00001170 60D3 MOV R13,R0
+ 00001172 30BC ADD R11,R0
+ 00001174 6203 MOV R0,R2
+ 00001176 324C ADD R4,R2
+ 00001178 63D3 MOV R13,R3
+ 0000117A 335C ADD R5,R3
+ 0000117C 334C ADD R4,R3
+ 0000117E 843A MOV.B @(10,R3),R0
+ 00001180 2200 MOV.B R0,@R2
+ 00001182 L661:
+ 00001182 7401 ADD #1,R4
+ 00001184 6343 MOV R4,R3
+ 00001186 336C ADD R6,R3
+ 00001188 843A MOV.B @(10,R3),R0
+ 0000118A 2008 TST R0,R0
+ 0000118C 8908 BT L662
+ 0000118E 60D3 MOV R13,R0
+ 00001190 30BC ADD R11,R0
+ 00001192 6203 MOV R0,R2
+ 00001194 324C ADD R4,R2
+ 00001196 63D3 MOV R13,R3
+ 00001198 335C ADD R5,R3
+ 0000119A 334C ADD R4,R3
+ 0000119C 843A MOV.B @(10,R3),R0
+ 0000119E 2200 MOV.B R0,@R2
+ 000011A0 L662:
+ 000011A0 7401 ADD #1,R4
+ 000011A2 E306 MOV #6,R3
+ 000011A4 3433 CMP/GE R3,R4
+ 000011A6 8BC0 BF L658
+ 000011A8 34A3 CMP/GE R10,R4
+ 000011AA 8910 BT L663
+ 000011AC L664:
+ 000011AC 6243 MOV R4,R2
+ 000011AE 326C ADD R6,R2
+ 000011B0 842A MOV.B @(10,R2),R0
+ 000011B2 2008 TST R0,R0
+ 000011B4 8908 BT L665
+ 000011B6 60D3 MOV R13,R0
+ 000011B8 30BC ADD R11,R0
+ 000011BA 6203 MOV R0,R2
+ 000011BC 324C ADD R4,R2
+ 000011BE 63D3 MOV R13,R3
+ 000011C0 335C ADD R5,R3
+ 000011C2 334C ADD R4,R3
+ 000011C4 843A MOV.B @(10,R3),R0
+ 000011C6 2200 MOV.B R0,@R2
+ 000011C8 L665:
+ 000011C8 7401 ADD #1,R4
+ 000011CA 34A3 CMP/GE R10,R4
+ 000011CC 8BEE BF L664
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 52
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000011CE L663:
+ 000011CE 7701 ADD #1,R7
+ 000011D0 E214 MOV #20,R2
+ 000011D2 3723 CMP/GE R2,R7
+ 000011D4 8BA1 BF L656
+ draw.c 434 }
+ draw.c 435 }
+ draw.c 436 }
+ draw.c 437 CreateBlock();
+ 000011D6 D151 MOV.L L787+14,R1 ; _CreateBlock
+ 000011D8 410B JSR @R1
+ 000011DA 0009 NOP
+ draw.c 438 if(nextdir == Fast)
+ 000011DC D450 MOV.L L787+18,R4 ; _nextdir
+ 000011DE 6040 MOV.B @R4,R0
+ 000011E0 881E CMP/EQ #30,R0
+ 000011E2 8B00 BF L655
+ draw.c 439 {
+ draw.c 440 nextdir = Down;
+ 000011E4 2490 MOV.B R9,@R4
+ 000011E6 L655:
+ draw.c 441 }
+ draw.c 442 }
+ draw.c 443
+ draw.c 444 line(pScreen, 0 , 0 , 101 , 0, 1);
+ 000011E6 ED01 MOV #1,R13
+ 000011E8 D24E MOV.L L787+22,R2 ; _line
+ 000011EA E765 MOV #101,R7
+ 000011EC 2FD6 MOV.L R13,@-R15
+ 000011EE E600 MOV #0,R6
+ 000011F0 2F96 MOV.L R9,@-R15
+ 000011F2 6563 MOV R6,R5
+ 000011F4 420B JSR @R2
+ 000011F6 64E2 MOV.L @R14,R4
+ draw.c 445 line(pScreen, 0 , 0 , 0 , 51, 1);
+ 000011F8 2FD6 MOV.L R13,@-R15
+ 000011FA E700 MOV #0,R7
+ 000011FC D349 MOV.L L787+22,R3 ; _line
+ 000011FE EC33 MOV #51,R12
+ 00001200 2FC6 MOV.L R12,@-R15
+ 00001202 6673 MOV R7,R6
+ 00001204 6573 MOV R7,R5
+ 00001206 430B JSR @R3
+ 00001208 64E2 MOV.L @R14,R4
+ draw.c 446 line(pScreen, 101 , 0 , 101 , 51, 1);
+ 0000120A E765 MOV #101,R7
+ 0000120C D245 MOV.L L787+22,R2 ; _line
+ 0000120E E600 MOV #0,R6
+ 00001210 2FD6 MOV.L R13,@-R15
+ 00001212 6573 MOV R7,R5
+ 00001214 2FC6 MOV.L R12,@-R15
+ 00001216 420B JSR @R2
+ 00001218 64E2 MOV.L @R14,R4
+ draw.c 447 line(pScreen, 101 , 51 , 0 , 51, 1);
+ 0000121A E700 MOV #0,R7
+ 0000121C D341 MOV.L L787+22,R3 ; _line
+ 0000121E 66C3 MOV R12,R6
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 53
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001220 2FD6 MOV.L R13,@-R15
+ 00001222 E565 MOV #101,R5
+ 00001224 2FC6 MOV.L R12,@-R15
+ 00001226 430B JSR @R3
+ 00001228 64E2 MOV.L @R14,R4
+ 0000122A 7F20 ADD #32,R15
+ draw.c 448
+ draw.c 449 for(ycount = 0; ycount < 20; ycount ++)
+ 0000122C 6893 MOV R9,R8
+ 0000122E L667:
+ draw.c 450 {
+ draw.c 451 for(xcount = 0; xcount < 10; xcount ++)
+ 0000122E 6D93 MOV R9,R13
+ 00001230 6C83 MOV R8,R12
+ 00001232 6383 MOV R8,R3
+ 00001234 4C08 SHLL2 R12
+ 00001236 3C3C ADD R3,R12
+ 00001238 4C00 SHLL R12
+ 0000123A L669:
+ draw.c 452 {
+ draw.c 453 if(globalmap[ycount][xcount] != 0 || changemap[ycount][xcount] != 0)
+ 0000123A 60C3 MOV R12,R0
+ 0000123C 30BC ADD R11,R0
+ 0000123E 03DC MOV.B @(R0,R13),R3
+ 00001240 2338 TST R3,R3
+ 00001242 8B05 BF L671
+ 00001244 D134 MOV.L L787+10,R1 ; _changemap
+ 00001246 31CC ADD R12,R1
+ 00001248 31DC ADD R13,R1
+ 0000124A 6310 MOV.B @R1,R3
+ 0000124C 2338 TST R3,R3
+ 0000124E 8910 BT L670
+ 00001250 L671:
+ draw.c 454 {
+ draw.c 455 fillbox(pScreen, ycount, xcount, (globalmap[ycount][xcount] != 0)? global
+ +map[ycount][xcount] - 1 : changemap[ycount][xcount] - 1);
+ 00001250 60C3 MOV R12,R0
+ 00001252 30BC ADD R11,R0
+ 00001254 07DC MOV.B @(R0,R13),R7
+ 00001256 2778 TST R7,R7
+ 00001258 8D02 BT/S L672
+ 0000125A 2F72 MOV.L R7,@R15
+ 0000125C A004 BRA L756
+ 0000125E 67F2 MOV.L @R15,R7
+ 00001260 L672:
+ 00001260 D72D MOV.L L787+10,R7 ; _changemap
+ 00001262 37CC ADD R12,R7
+ 00001264 37DC ADD R13,R7
+ 00001266 6770 MOV.B @R7,R7
+ 00001268 L756:
+ 00001268 77FF ADD #-1,R7
+ 0000126A 66D3 MOV R13,R6
+ 0000126C 6583 MOV R8,R5
+ 0000126E B85A BSR _fillbox
+ 00001270 64E2 MOV.L @R14,R4
+ 00001272 L670:
+ 00001272 7D01 ADD #1,R13
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 54
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001274 60C3 MOV R12,R0
+ 00001276 30BC ADD R11,R0
+ 00001278 03DC MOV.B @(R0,R13),R3
+ 0000127A 2338 TST R3,R3
+ 0000127C 8B05 BF L675
+ 0000127E D126 MOV.L L787+10,R1 ; _changemap
+ 00001280 31CC ADD R12,R1
+ 00001282 31DC ADD R13,R1
+ 00001284 6310 MOV.B @R1,R3
+ 00001286 2338 TST R3,R3
+ 00001288 8910 BT L674
+ 0000128A L675:
+ 0000128A 60C3 MOV R12,R0
+ 0000128C 30BC ADD R11,R0
+ 0000128E 07DC MOV.B @(R0,R13),R7
+ 00001290 2778 TST R7,R7
+ 00001292 8D02 BT/S L676
+ 00001294 2F72 MOV.L R7,@R15
+ 00001296 A004 BRA L757
+ 00001298 67F2 MOV.L @R15,R7
+ 0000129A L676:
+ 0000129A D71F MOV.L L787+10,R7 ; _changemap
+ 0000129C 37CC ADD R12,R7
+ 0000129E 37DC ADD R13,R7
+ 000012A0 6770 MOV.B @R7,R7
+ 000012A2 L757:
+ 000012A2 77FF ADD #-1,R7
+ 000012A4 66D3 MOV R13,R6
+ 000012A6 6583 MOV R8,R5
+ 000012A8 B83D BSR _fillbox
+ 000012AA 64E2 MOV.L @R14,R4
+ 000012AC L674:
+ 000012AC 7D01 ADD #1,R13
+ 000012AE 60C3 MOV R12,R0
+ 000012B0 30BC ADD R11,R0
+ 000012B2 03DC MOV.B @(R0,R13),R3
+ 000012B4 2338 TST R3,R3
+ 000012B6 8B05 BF L679
+ 000012B8 D117 MOV.L L787+10,R1 ; _changemap
+ 000012BA 31CC ADD R12,R1
+ 000012BC 31DC ADD R13,R1
+ 000012BE 6310 MOV.B @R1,R3
+ 000012C0 2338 TST R3,R3
+ 000012C2 8910 BT L678
+ 000012C4 L679:
+ 000012C4 60C3 MOV R12,R0
+ 000012C6 30BC ADD R11,R0
+ 000012C8 07DC MOV.B @(R0,R13),R7
+ 000012CA 2778 TST R7,R7
+ 000012CC 8D02 BT/S L680
+ 000012CE 2F72 MOV.L R7,@R15
+ 000012D0 A004 BRA L758
+ 000012D2 67F2 MOV.L @R15,R7
+ 000012D4 L680:
+ 000012D4 D710 MOV.L L787+10,R7 ; _changemap
+ 000012D6 37CC ADD R12,R7
+ 000012D8 37DC ADD R13,R7
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 55
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000012DA 6770 MOV.B @R7,R7
+ 000012DC L758:
+ 000012DC 77FF ADD #-1,R7
+ 000012DE 66D3 MOV R13,R6
+ 000012E0 6583 MOV R8,R5
+ 000012E2 B820 BSR _fillbox
+ 000012E4 64E2 MOV.L @R14,R4
+ 000012E6 L678:
+ 000012E6 7D01 ADD #1,R13
+ 000012E8 60C3 MOV R12,R0
+ 000012EA 30BC ADD R11,R0
+ 000012EC 03DC MOV.B @(R0,R13),R3
+ 000012EE 2338 TST R3,R3
+ 000012F0 8B05 BF L683
+ 000012F2 D109 MOV.L L787+10,R1 ; _changemap
+ 000012F4 31CC ADD R12,R1
+ 000012F6 31DC ADD R13,R1
+ 000012F8 6310 MOV.B @R1,R3
+ 000012FA 2338 TST R3,R3
+ 000012FC 891E BT L682
+ 000012FE L683:
+ 000012FE 60C3 MOV R12,R0
+ 00001300 30BC ADD R11,R0
+ 00001302 07DC MOV.B @(R0,R13),R7
+ 00001304 2778 TST R7,R7
+ 00001306 8D0F BT/S L684
+ 00001308 2F72 MOV.L R7,@R15
+ 0000130A A011 BRA L759
+ 0000130C 67F2 MOV.L @R15,R7
+ 0000130E L787:
+ 0000130E 0000 .DATA.W 0
+ 00001310 <00000000> .DATA.L __divls
+ 00001314 <00000000> .DATA.L _globalmap
+ 00001318 <00000000> .DATA.L _changemap
+ 0000131C <00000000> .DATA.L _CreateBlock
+ 00001320 <00000000> .DATA.L _nextdir
+ 00001324 <00000000> .DATA.L _line
+ 00001328 L684:
+ 00001328 D776 MOV.L L788,R7 ; _changemap
+ 0000132A 37CC ADD R12,R7
+ 0000132C 37DC ADD R13,R7
+ 0000132E 6770 MOV.B @R7,R7
+ 00001330 L759:
+ 00001330 D275 MOV.L L788+4,R2 ; _fillbox
+ 00001332 77FF ADD #-1,R7
+ 00001334 66D3 MOV R13,R6
+ 00001336 6583 MOV R8,R5
+ 00001338 420B JSR @R2
+ 0000133A 64E2 MOV.L @R14,R4
+ 0000133C L682:
+ 0000133C 7D01 ADD #1,R13
+ 0000133E E306 MOV #6,R3
+ 00001340 3D33 CMP/GE R3,R13
+ 00001342 8901 BT L789
+ 00001344 AF79 BRA L669
+ 00001346 0009 NOP
+ 00001348 L789:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 56
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001348 3DA3 CMP/GE R10,R13
+ 0000134A 891F BT L686
+ 0000134C L687:
+ 0000134C 60C3 MOV R12,R0
+ 0000134E 30BC ADD R11,R0
+ 00001350 03DC MOV.B @(R0,R13),R3
+ 00001352 2338 TST R3,R3
+ 00001354 8B05 BF L689
+ 00001356 D16B MOV.L L788,R1 ; _changemap
+ 00001358 31CC ADD R12,R1
+ 0000135A 31DC ADD R13,R1
+ 0000135C 6310 MOV.B @R1,R3
+ 0000135E 2338 TST R3,R3
+ 00001360 8911 BT L688
+ 00001362 L689:
+ 00001362 60C3 MOV R12,R0
+ 00001364 30BC ADD R11,R0
+ 00001366 07DC MOV.B @(R0,R13),R7
+ 00001368 2778 TST R7,R7
+ 0000136A 8D02 BT/S L690
+ 0000136C 2F72 MOV.L R7,@R15
+ 0000136E A004 BRA L760
+ 00001370 67F2 MOV.L @R15,R7
+ 00001372 L690:
+ 00001372 D764 MOV.L L788,R7 ; _changemap
+ 00001374 37CC ADD R12,R7
+ 00001376 37DC ADD R13,R7
+ 00001378 6770 MOV.B @R7,R7
+ 0000137A L760:
+ 0000137A 77FF ADD #-1,R7
+ 0000137C D262 MOV.L L788+4,R2 ; _fillbox
+ 0000137E 66D3 MOV R13,R6
+ 00001380 6583 MOV R8,R5
+ 00001382 420B JSR @R2
+ 00001384 64E2 MOV.L @R14,R4
+ 00001386 L688:
+ 00001386 7D01 ADD #1,R13
+ 00001388 3DA3 CMP/GE R10,R13
+ 0000138A 8BDF BF L687
+ 0000138C L686:
+ 0000138C 7801 ADD #1,R8
+ 0000138E E214 MOV #20,R2
+ 00001390 3823 CMP/GE R2,R8
+ 00001392 8901 BT L790
+ 00001394 AF4B BRA L667
+ 00001396 0009 NOP
+ 00001398 L790:
+ draw.c 456 }
+ draw.c 457 }
+ draw.c 458 }
+ draw.c 459
+ draw.c 460 drawString(pScreen, &"NEXT", 4, 103, 2);
+ 00001398 D55C MOV.L L788+8,R5 ; L423
+ 0000139A E102 MOV #2,R1
+ 0000139C D35C MOV.L L788+12,R3 ; _drawString
+ 0000139E E767 MOV #103,R7
+ 000013A0 2F16 MOV.L R1,@-R15
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 57
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000013A2 E604 MOV #4,R6
+ 000013A4 430B JSR @R3
+ 000013A6 64E2 MOV.L @R14,R4
+ draw.c 461
+ draw.c 462 //draw the next block
+ draw.c 463
+ draw.c 464 switch(nextblock)
+ 000013A8 D25A MOV.L L788+16,R2 ; _nextblock
+ 000013AA 7F04 ADD #4,R15
+ 000013AC 6020 MOV.B @R2,R0
+ 000013AE E804 MOV #4,R8
+ 000013B0 EC03 MOV #3,R12
+ 000013B2 8801 CMP/EQ #1,R0
+ 000013B4 8D16 BT/S L486
+ 000013B6 ED16 MOV #22,R13
+ 000013B8 8802 CMP/EQ #2,R0
+ 000013BA 8937 BT L487
+ 000013BC 8803 CMP/EQ #3,R0
+ 000013BE 897D BT L488
+ 000013C0 8804 CMP/EQ #4,R0
+ 000013C2 8B01 BF L791
+ 000013C4 A0B0 BRA L489
+ 000013C6 0009 NOP
+ 000013C8 L791:
+ 000013C8 8805 CMP/EQ #5,R0
+ 000013CA 8B01 BF L792
+ 000013CC A0D0 BRA L490
+ 000013CE 0009 NOP
+ 000013D0 L792:
+ 000013D0 8806 CMP/EQ #6,R0
+ 000013D2 8B01 BF L793
+ 000013D4 A0F0 BRA L491
+ 000013D6 0009 NOP
+ 000013D8 L793:
+ 000013D8 8807 CMP/EQ #7,R0
+ 000013DA 8B01 BF L794
+ 000013DC A110 BRA L492
+ 000013DE 0009 NOP
+ 000013E0 L794:
+ 000013E0 A130 BRA L692
+ 000013E2 0009 NOP
+ 000013E4 L486: ; case label
+ 000013E4 D44C MOV.L L788+20,R4 ; _blockO
+ draw.c 465 {
+ draw.c 466 case 1 :
+ draw.c 467 for(xcount = 0; xcount < 4; xcount ++)
+ 000013E6 6A93 MOV R9,R10
+ 000013E8 6343 MOV R4,R3
+ 000013EA 7330 ADD #48,R3
+ 000013EC 1F31 MOV.L R3,@(4,R15)
+ 000013EE 1F43 MOV.L R4,@(12,R15)
+ 000013F0 L693:
+ 000013F0 2FD2 MOV.L R13,@R15
+ 000013F2 63A3 MOV R10,R3
+ 000013F4 5BF3 MOV.L @(12,R15),R11
+ 000013F6 4308 SHLL2 R3
+ 000013F8 1F32 MOV.L R3,@(8,R15)
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 58
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 468 {
+ draw.c 469 for(ycount = 0; ycount < 3; ycount ++)
+ 000013FA 52F1 MOV.L @(4,R15),R2
+ 000013FC 3B22 CMP/HS R2,R11
+ 000013FE 8910 BT L694
+ 00001400 L695:
+ draw.c 470 {
+ draw.c 471 if(blockO[0][ycount][xcount] == 1)
+ 00001400 50F2 MOV.L @(8,R15),R0
+ 00001402 00BE MOV.L @(R0,R11),R0
+ 00001404 8801 CMP/EQ #1,R0
+ 00001406 8B05 BF L696
+ draw.c 472 {
+ draw.c 473 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 0);
+ 00001408 65F2 MOV.L @R15,R5
+ 0000140A E700 MOV #0,R7
+ 0000140C D343 MOV.L L788+24,R3 ; _normalfillbox
+ 0000140E 66A3 MOV R10,R6
+ 00001410 430B JSR @R3
+ 00001412 64E2 MOV.L @R14,R4
+ 00001414 L696:
+ 00001414 62F2 MOV.L @R15,R2
+ 00001416 7B10 ADD #16,R11
+ 00001418 7201 ADD #1,R2
+ 0000141A 2F22 MOV.L R2,@R15
+ 0000141C 53F1 MOV.L @(4,R15),R3
+ 0000141E 3B32 CMP/HS R3,R11
+ 00001420 8BEE BF L695
+ 00001422 L694:
+ 00001422 7A01 ADD #1,R10
+ 00001424 3A83 CMP/GE R8,R10
+ 00001426 8BE3 BF L693
+ draw.c 474 }
+ draw.c 475 }
+ draw.c 476 }
+ draw.c 477 break;
+ 00001428 A10C BRA L692
+ 0000142A 0009 NOP
+ 0000142C L487: ; case label
+ draw.c 478
+ draw.c 479 case 2 :
+ draw.c 480 for(xcount = 0; xcount < 4; xcount ++)
+ 0000142C 2F92 MOV.L R9,@R15
+ 0000142E D43C MOV.L L788+28,R4 ; _blockI
+ 00001430 6343 MOV R4,R3
+ 00001432 7340 ADD #64,R3
+ 00001434 1F32 MOV.L R3,@(8,R15)
+ 00001436 1F43 MOV.L R4,@(12,R15)
+ 00001438 L697:
+ 00001438 5BF3 MOV.L @(12,R15),R11
+ 0000143A 63F2 MOV.L @R15,R3
+ 0000143C 4308 SHLL2 R3
+ 0000143E 1F31 MOV.L R3,@(4,R15)
+ draw.c 481 {
+ draw.c 482 for(ycount = 0; ycount < 4; ycount ++)
+ 00001440 52F2 MOV.L @(8,R15),R2
+ 00001442 3B22 CMP/HS R2,R11
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 59
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001444 8D33 BT/S L698
+ 00001446 6AD3 MOV R13,R10
+ 00001448 L699:
+ draw.c 483 {
+ draw.c 484 if(blockI[0][ycount][xcount] == 1)
+ 00001448 50F1 MOV.L @(4,R15),R0
+ 0000144A 00BE MOV.L @(R0,R11),R0
+ 0000144C 8801 CMP/EQ #1,R0
+ 0000144E 8B05 BF L700
+ draw.c 485 {
+ draw.c 486 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 1);
+ 00001450 66F2 MOV.L @R15,R6
+ 00001452 65A3 MOV R10,R5
+ 00001454 D331 MOV.L L788+24,R3 ; _normalfillbox
+ 00001456 E701 MOV #1,R7
+ 00001458 430B JSR @R3
+ 0000145A 64E2 MOV.L @R14,R4
+ 0000145C L700:
+ 0000145C 50F1 MOV.L @(4,R15),R0
+ 0000145E 7B10 ADD #16,R11
+ 00001460 00BE MOV.L @(R0,R11),R0
+ 00001462 8801 CMP/EQ #1,R0
+ 00001464 8F06 BF/S L701
+ 00001466 7A01 ADD #1,R10
+ 00001468 66F2 MOV.L @R15,R6
+ 0000146A 65A3 MOV R10,R5
+ 0000146C D32B MOV.L L788+24,R3 ; _normalfillbox
+ 0000146E E701 MOV #1,R7
+ 00001470 430B JSR @R3
+ 00001472 64E2 MOV.L @R14,R4
+ 00001474 L701:
+ 00001474 50F1 MOV.L @(4,R15),R0
+ 00001476 7B10 ADD #16,R11
+ 00001478 00BE MOV.L @(R0,R11),R0
+ 0000147A 8801 CMP/EQ #1,R0
+ 0000147C 8F06 BF/S L702
+ 0000147E 7A01 ADD #1,R10
+ 00001480 66F2 MOV.L @R15,R6
+ 00001482 65A3 MOV R10,R5
+ 00001484 D325 MOV.L L788+24,R3 ; _normalfillbox
+ 00001486 E701 MOV #1,R7
+ 00001488 430B JSR @R3
+ 0000148A 64E2 MOV.L @R14,R4
+ 0000148C L702:
+ 0000148C 50F1 MOV.L @(4,R15),R0
+ 0000148E 7B10 ADD #16,R11
+ 00001490 00BE MOV.L @(R0,R11),R0
+ 00001492 8801 CMP/EQ #1,R0
+ 00001494 8F06 BF/S L703
+ 00001496 7A01 ADD #1,R10
+ 00001498 66F2 MOV.L @R15,R6
+ 0000149A 65A3 MOV R10,R5
+ 0000149C D31F MOV.L L788+24,R3 ; _normalfillbox
+ 0000149E E701 MOV #1,R7
+ 000014A0 430B JSR @R3
+ 000014A2 64E2 MOV.L @R14,R4
+ 000014A4 L703:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 60
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000014A4 52F2 MOV.L @(8,R15),R2
+ 000014A6 7B10 ADD #16,R11
+ 000014A8 3B22 CMP/HS R2,R11
+ 000014AA 8FCD BF/S L699
+ 000014AC 7A01 ADD #1,R10
+ 000014AE L698:
+ 000014AE 61F2 MOV.L @R15,R1
+ 000014B0 7101 ADD #1,R1
+ 000014B2 3183 CMP/GE R8,R1
+ 000014B4 8FC0 BF/S L697
+ 000014B6 2F12 MOV.L R1,@R15
+ draw.c 487 }
+ draw.c 488 }
+ draw.c 489 }
+ draw.c 490 break;
+ 000014B8 A0C4 BRA L692
+ 000014BA 0009 NOP
+ 000014BC L488: ; case label
+ 000014BC D419 MOV.L L788+32,R4 ; _blockT
+ draw.c 491
+ draw.c 492 case 3 :
+ draw.c 493 for(xcount = 0; xcount < 3; xcount ++)
+ 000014BE 6A93 MOV R9,R10
+ 000014C0 6343 MOV R4,R3
+ 000014C2 7324 ADD #36,R3
+ 000014C4 1F31 MOV.L R3,@(4,R15)
+ 000014C6 1F43 MOV.L R4,@(12,R15)
+ 000014C8 L704:
+ 000014C8 2FD2 MOV.L R13,@R15
+ 000014CA 63A3 MOV R10,R3
+ 000014CC 5BF3 MOV.L @(12,R15),R11
+ 000014CE 4308 SHLL2 R3
+ 000014D0 1F32 MOV.L R3,@(8,R15)
+ draw.c 494 {
+ draw.c 495 for(ycount = 0; ycount < 3; ycount ++)
+ 000014D2 52F1 MOV.L @(4,R15),R2
+ 000014D4 3B22 CMP/HS R2,R11
+ 000014D6 8910 BT L705
+ 000014D8 L706:
+ draw.c 496 {
+ draw.c 497 if(blockT[0][ycount][xcount] == 1)
+ 000014D8 50F2 MOV.L @(8,R15),R0
+ 000014DA 00BE MOV.L @(R0,R11),R0
+ 000014DC 8801 CMP/EQ #1,R0
+ 000014DE 8B05 BF L707
+ draw.c 498 {
+ draw.c 499 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 2);
+ 000014E0 65F2 MOV.L @R15,R5
+ 000014E2 E702 MOV #2,R7
+ 000014E4 D30D MOV.L L788+24,R3 ; _normalfillbox
+ 000014E6 66A3 MOV R10,R6
+ 000014E8 430B JSR @R3
+ 000014EA 64E2 MOV.L @R14,R4
+ 000014EC L707:
+ 000014EC 62F2 MOV.L @R15,R2
+ 000014EE 7B0C ADD #12,R11
+ 000014F0 7201 ADD #1,R2
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 61
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000014F2 2F22 MOV.L R2,@R15
+ 000014F4 53F1 MOV.L @(4,R15),R3
+ 000014F6 3B32 CMP/HS R3,R11
+ 000014F8 8BEE BF L706
+ 000014FA L705:
+ 000014FA 7A01 ADD #1,R10
+ 000014FC 3AC3 CMP/GE R12,R10
+ 000014FE 8BE3 BF L704
+ draw.c 500 }
+ draw.c 501 }
+ draw.c 502 }
+ draw.c 503 break;
+ 00001500 A0A0 BRA L692
+ 00001502 0009 NOP
+ 00001504 L788:
+ 00001504 <00000000> .DATA.L _changemap
+ 00001508 <00000000> .DATA.L _fillbox
+ 0000150C <00000000> .DATA.L L423
+ 00001510 <00000000> .DATA.L _drawString
+ 00001514 <00000000> .DATA.L _nextblock
+ 00001518 <00000000> .DATA.L _blockO
+ 0000151C <00000000> .DATA.L _normalfillbox
+ 00001520 <00000000> .DATA.L _blockI
+ 00001524 <00000000> .DATA.L _blockT
+ 00001528 L489: ; case label
+ 00001528 D469 MOV.L L795,R4 ; _blockJ
+ draw.c 504
+ draw.c 505 case 4 :
+ draw.c 506 for(xcount = 0; xcount < 3; xcount ++)
+ 0000152A 6A93 MOV R9,R10
+ 0000152C 6343 MOV R4,R3
+ 0000152E 7324 ADD #36,R3
+ 00001530 1F31 MOV.L R3,@(4,R15)
+ 00001532 1F43 MOV.L R4,@(12,R15)
+ 00001534 L708:
+ 00001534 2FD2 MOV.L R13,@R15
+ 00001536 63A3 MOV R10,R3
+ 00001538 5BF3 MOV.L @(12,R15),R11
+ 0000153A 4308 SHLL2 R3
+ 0000153C 1F32 MOV.L R3,@(8,R15)
+ draw.c 507 {
+ draw.c 508 for(ycount = 0; ycount < 3; ycount ++)
+ 0000153E 52F1 MOV.L @(4,R15),R2
+ 00001540 3B22 CMP/HS R2,R11
+ 00001542 8910 BT L709
+ 00001544 L710:
+ draw.c 509 {
+ draw.c 510 if(blockJ[0][ycount][xcount] == 1)
+ 00001544 50F2 MOV.L @(8,R15),R0
+ 00001546 00BE MOV.L @(R0,R11),R0
+ 00001548 8801 CMP/EQ #1,R0
+ 0000154A 8B05 BF L711
+ draw.c 511 {
+ draw.c 512 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 3);
+ 0000154C 65F2 MOV.L @R15,R5
+ 0000154E E703 MOV #3,R7
+ 00001550 D360 MOV.L L795+4,R3 ; _normalfillbox
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 62
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001552 66A3 MOV R10,R6
+ 00001554 430B JSR @R3
+ 00001556 64E2 MOV.L @R14,R4
+ 00001558 L711:
+ 00001558 62F2 MOV.L @R15,R2
+ 0000155A 7B0C ADD #12,R11
+ 0000155C 7201 ADD #1,R2
+ 0000155E 2F22 MOV.L R2,@R15
+ 00001560 53F1 MOV.L @(4,R15),R3
+ 00001562 3B32 CMP/HS R3,R11
+ 00001564 8BEE BF L710
+ 00001566 L709:
+ 00001566 7A01 ADD #1,R10
+ 00001568 3AC3 CMP/GE R12,R10
+ 0000156A 8BE3 BF L708
+ draw.c 513 }
+ draw.c 514 }
+ draw.c 515 }
+ draw.c 516 break;
+ 0000156C A06A BRA L692
+ 0000156E 0009 NOP
+ 00001570 L490: ; case label
+ draw.c 517
+ draw.c 518 case 5 :
+ draw.c 519 for(xcount = 0; xcount < 3; xcount ++)
+ 00001570 2F92 MOV.L R9,@R15
+ 00001572 D459 MOV.L L795+8,R4 ; _blockL
+ 00001574 6343 MOV R4,R3
+ 00001576 7324 ADD #36,R3
+ 00001578 1F31 MOV.L R3,@(4,R15)
+ 0000157A 1F43 MOV.L R4,@(12,R15)
+ 0000157C L712:
+ 0000157C 5BF3 MOV.L @(12,R15),R11
+ 0000157E 63F2 MOV.L @R15,R3
+ 00001580 4308 SHLL2 R3
+ 00001582 1F32 MOV.L R3,@(8,R15)
+ draw.c 520 {
+ draw.c 521 for(ycount = 0; ycount < 3; ycount ++)
+ 00001584 52F1 MOV.L @(4,R15),R2
+ 00001586 3B22 CMP/HS R2,R11
+ 00001588 8D0F BT/S L713
+ 0000158A 6AD3 MOV R13,R10
+ 0000158C L714:
+ draw.c 522 {
+ draw.c 523 if(blockL[0][ycount][xcount] == 1)
+ 0000158C 50F2 MOV.L @(8,R15),R0
+ 0000158E 00BE MOV.L @(R0,R11),R0
+ 00001590 8801 CMP/EQ #1,R0
+ 00001592 8B05 BF L715
+ draw.c 524 {
+ draw.c 525 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 4);
+ 00001594 66F2 MOV.L @R15,R6
+ 00001596 65A3 MOV R10,R5
+ 00001598 D34E MOV.L L795+4,R3 ; _normalfillbox
+ 0000159A E704 MOV #4,R7
+ 0000159C 430B JSR @R3
+ 0000159E 64E2 MOV.L @R14,R4
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 63
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000015A0 L715:
+ 000015A0 52F1 MOV.L @(4,R15),R2
+ 000015A2 7B0C ADD #12,R11
+ 000015A4 3B22 CMP/HS R2,R11
+ 000015A6 8FF1 BF/S L714
+ 000015A8 7A01 ADD #1,R10
+ 000015AA L713:
+ 000015AA 61F2 MOV.L @R15,R1
+ 000015AC 7101 ADD #1,R1
+ 000015AE 31C3 CMP/GE R12,R1
+ 000015B0 8FE4 BF/S L712
+ 000015B2 2F12 MOV.L R1,@R15
+ draw.c 526 }
+ draw.c 527 }
+ draw.c 528 }
+ draw.c 529 break;
+ 000015B4 A046 BRA L692
+ 000015B6 0009 NOP
+ 000015B8 L491: ; case label
+ draw.c 530
+ draw.c 531 case 6 :
+ draw.c 532 for(xcount = 0; xcount < 3; xcount ++)
+ 000015B8 2F92 MOV.L R9,@R15
+ 000015BA D448 MOV.L L795+12,R4 ; _blockZ
+ 000015BC 6343 MOV R4,R3
+ 000015BE 7324 ADD #36,R3
+ 000015C0 1F31 MOV.L R3,@(4,R15)
+ 000015C2 1F43 MOV.L R4,@(12,R15)
+ 000015C4 L716:
+ 000015C4 5BF3 MOV.L @(12,R15),R11
+ 000015C6 63F2 MOV.L @R15,R3
+ 000015C8 4308 SHLL2 R3
+ 000015CA 1F32 MOV.L R3,@(8,R15)
+ draw.c 533 {
+ draw.c 534 for(ycount = 0; ycount < 3; ycount ++)
+ 000015CC 52F1 MOV.L @(4,R15),R2
+ 000015CE 3B22 CMP/HS R2,R11
+ 000015D0 8D0F BT/S L717
+ 000015D2 6AD3 MOV R13,R10
+ 000015D4 L718:
+ draw.c 535 {
+ draw.c 536 if(blockZ[0][ycount][xcount] == 1)
+ 000015D4 50F2 MOV.L @(8,R15),R0
+ 000015D6 00BE MOV.L @(R0,R11),R0
+ 000015D8 8801 CMP/EQ #1,R0
+ 000015DA 8B05 BF L719
+ draw.c 537 {
+ draw.c 538 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 5);
+ 000015DC 66F2 MOV.L @R15,R6
+ 000015DE 65A3 MOV R10,R5
+ 000015E0 D33C MOV.L L795+4,R3 ; _normalfillbox
+ 000015E2 E705 MOV #5,R7
+ 000015E4 430B JSR @R3
+ 000015E6 64E2 MOV.L @R14,R4
+ 000015E8 L719:
+ 000015E8 52F1 MOV.L @(4,R15),R2
+ 000015EA 7B0C ADD #12,R11
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 64
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000015EC 3B22 CMP/HS R2,R11
+ 000015EE 8FF1 BF/S L718
+ 000015F0 7A01 ADD #1,R10
+ 000015F2 L717:
+ 000015F2 61F2 MOV.L @R15,R1
+ 000015F4 7101 ADD #1,R1
+ 000015F6 31C3 CMP/GE R12,R1
+ 000015F8 8FE4 BF/S L716
+ 000015FA 2F12 MOV.L R1,@R15
+ draw.c 539 }
+ draw.c 540 }
+ draw.c 541 }
+ draw.c 542 break;
+ 000015FC A022 BRA L692
+ 000015FE 0009 NOP
+ 00001600 L492: ; case label
+ draw.c 543
+ draw.c 544 case 7 :
+ draw.c 545 for(xcount = 0; xcount < 3; xcount ++)
+ 00001600 2F92 MOV.L R9,@R15
+ 00001602 D437 MOV.L L795+16,R4 ; _blockS
+ 00001604 6343 MOV R4,R3
+ 00001606 7324 ADD #36,R3
+ 00001608 1F31 MOV.L R3,@(4,R15)
+ 0000160A 1F43 MOV.L R4,@(12,R15)
+ 0000160C L720:
+ 0000160C 5BF3 MOV.L @(12,R15),R11
+ 0000160E 63F2 MOV.L @R15,R3
+ 00001610 4308 SHLL2 R3
+ 00001612 1F32 MOV.L R3,@(8,R15)
+ draw.c 546 {
+ draw.c 547 for(ycount = 0; ycount < 3; ycount ++)
+ 00001614 52F1 MOV.L @(4,R15),R2
+ 00001616 3B22 CMP/HS R2,R11
+ 00001618 8D0F BT/S L721
+ 0000161A 6AD3 MOV R13,R10
+ 0000161C L722:
+ draw.c 548 {
+ draw.c 549 if(blockS[0][ycount][xcount] == 1)
+ 0000161C 50F2 MOV.L @(8,R15),R0
+ 0000161E 00BE MOV.L @(R0,R11),R0
+ 00001620 8801 CMP/EQ #1,R0
+ 00001622 8B05 BF L723
+ draw.c 550 {
+ draw.c 551 normalfillbox(pScreen, 22 + ycount , 0 + xcount, 6);
+ 00001624 66F2 MOV.L @R15,R6
+ 00001626 65A3 MOV R10,R5
+ 00001628 D32A MOV.L L795+4,R3 ; _normalfillbox
+ 0000162A E706 MOV #6,R7
+ 0000162C 430B JSR @R3
+ 0000162E 64E2 MOV.L @R14,R4
+ 00001630 L723:
+ 00001630 52F1 MOV.L @(4,R15),R2
+ 00001632 7B0C ADD #12,R11
+ 00001634 3B22 CMP/HS R2,R11
+ 00001636 8FF1 BF/S L722
+ 00001638 7A01 ADD #1,R10
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 65
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000163A L721:
+ 0000163A 61F2 MOV.L @R15,R1
+ 0000163C 7101 ADD #1,R1
+ 0000163E 31C3 CMP/GE R12,R1
+ 00001640 8FE4 BF/S L720
+ 00001642 2F12 MOV.L R1,@R15
+ 00001644 L692:
+ draw.c 552 }
+ draw.c 553 }
+ draw.c 554 }
+ draw.c 555 break;
+ draw.c 556 }
+ draw.c 557
+ draw.c 558 drawString(pScreen, &"HOLD", 4, 103, 22);
+ 00001644 2FD6 MOV.L R13,@-R15
+ 00001646 E767 MOV #103,R7
+ 00001648 D526 MOV.L L795+20,R5 ; L446
+ 0000164A E604 MOV #4,R6
+ 0000164C D326 MOV.L L795+24,R3 ; _drawString
+ 0000164E 430B JSR @R3
+ 00001650 64E2 MOV.L @R14,R4
+ draw.c 559
+ draw.c 560 //draw the stored block
+ draw.c 561
+ draw.c 562 switch(hold)
+ 00001652 D226 MOV.L L795+28,R2 ; _hold
+ 00001654 6020 MOV.B @R2,R0
+ 00001656 8801 CMP/EQ #1,R0
+ 00001658 8D18 BT/S L494
+ 0000165A 7F04 ADD #4,R15
+ 0000165C 8802 CMP/EQ #2,R0
+ 0000165E 8949 BT L495
+ 00001660 8803 CMP/EQ #3,R0
+ 00001662 8B01 BF L796
+ 00001664 A08E BRA L496
+ 00001666 0009 NOP
+ 00001668 L796:
+ 00001668 8804 CMP/EQ #4,R0
+ 0000166A 8B01 BF L797
+ 0000166C A0AC BRA L497
+ 0000166E 0009 NOP
+ 00001670 L797:
+ 00001670 8805 CMP/EQ #5,R0
+ 00001672 8B01 BF L798
+ 00001674 A0CA BRA L498
+ 00001676 0009 NOP
+ 00001678 L798:
+ 00001678 8806 CMP/EQ #6,R0
+ 0000167A 8B01 BF L799
+ 0000167C A0E8 BRA L499
+ 0000167E 0009 NOP
+ 00001680 L799:
+ 00001680 8807 CMP/EQ #7,R0
+ 00001682 8B01 BF L800
+ 00001684 A106 BRA L500
+ 00001686 0009 NOP
+ 00001688 L800:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 66
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001688 A124 BRA L724
+ 0000168A 0009 NOP
+ 0000168C L494: ; case label
+ 0000168C D418 MOV.L L795+32,R4 ; _blockO
+ draw.c 563 {
+ draw.c 564 case 1 :
+ draw.c 565 for(xcount = 0; xcount < 4; xcount ++)
+ 0000168E 6B93 MOV R9,R11
+ 00001690 2F42 MOV.L R4,@R15
+ 00001692 6943 MOV R4,R9
+ 00001694 7930 ADD #48,R9
+ 00001696 L725:
+ 00001696 6AD3 MOV R13,R10
+ 00001698 6CF2 MOV.L @R15,R12
+ 0000169A 63B3 MOV R11,R3
+ 0000169C 4308 SHLL2 R3
+ 0000169E 62B3 MOV R11,R2
+ 000016A0 1F31 MOV.L R3,@(4,R15)
+ draw.c 566 {
+ draw.c 567 for(ycount = 0; ycount < 3; ycount ++)
+ 000016A2 3C92 CMP/HS R9,R12
+ 000016A4 7204 ADD #4,R2
+ 000016A6 8D0E BT/S L726
+ 000016A8 1F22 MOV.L R2,@(8,R15)
+ 000016AA L727:
+ draw.c 568 {
+ draw.c 569 if(blockO[0][ycount][xcount] == 1)
+ 000016AA 50F1 MOV.L @(4,R15),R0
+ 000016AC 00CE MOV.L @(R0,R12),R0
+ 000016AE 8801 CMP/EQ #1,R0
+ 000016B0 8B05 BF L728
+ draw.c 570 {
+ draw.c 571 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 0);
+ 000016B2 E700 MOV #0,R7
+ 000016B4 56F2 MOV.L @(8,R15),R6
+ 000016B6 65A3 MOV R10,R5
+ 000016B8 D306 MOV.L L795+4,R3 ; _normalfillbox
+ 000016BA 430B JSR @R3
+ 000016BC 64E2 MOV.L @R14,R4
+ 000016BE L728:
+ 000016BE 7C10 ADD #16,R12
+ 000016C0 3C92 CMP/HS R9,R12
+ 000016C2 8FF2 BF/S L727
+ 000016C4 7A01 ADD #1,R10
+ 000016C6 L726:
+ 000016C6 7B01 ADD #1,R11
+ 000016C8 3B83 CMP/GE R8,R11
+ 000016CA 8BE4 BF L725
+ draw.c 572 }
+ draw.c 573 }
+ draw.c 574 }
+ draw.c 575 break;
+ 000016CC A102 BRA L724
+ 000016CE 0009 NOP
+ 000016D0 L795:
+ 000016D0 <00000000> .DATA.L _blockJ
+ 000016D4 <00000000> .DATA.L _normalfillbox
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 67
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000016D8 <00000000> .DATA.L _blockL
+ 000016DC <00000000> .DATA.L _blockZ
+ 000016E0 <00000000> .DATA.L _blockS
+ 000016E4 <00000000> .DATA.L L446
+ 000016E8 <00000000> .DATA.L _drawString
+ 000016EC <00000000> .DATA.L _hold
+ 000016F0 <00000000> .DATA.L _blockO
+ 000016F4 L495: ; case label
+ 000016F4 D47C MOV.L L801,R4 ; _blockI
+ draw.c 576
+ draw.c 577 case 2 :
+ draw.c 578 for(xcount = 0; xcount < 4; xcount ++)
+ 000016F6 6A93 MOV R9,R10
+ 000016F8 6343 MOV R4,R3
+ 000016FA 7340 ADD #64,R3
+ 000016FC 1F31 MOV.L R3,@(4,R15)
+ 000016FE 1F42 MOV.L R4,@(8,R15)
+ 00001700 L729:
+ 00001700 5CF2 MOV.L @(8,R15),R12
+ 00001702 69A3 MOV R10,R9
+ 00001704 6BD3 MOV R13,R11
+ 00001706 63A3 MOV R10,R3
+ 00001708 7304 ADD #4,R3
+ 0000170A 2F32 MOV.L R3,@R15
+ draw.c 579 {
+ draw.c 580 for(ycount = 0; ycount < 4; ycount ++)
+ 0000170C 52F1 MOV.L @(4,R15),R2
+ 0000170E 3C22 CMP/HS R2,R12
+ 00001710 8D33 BT/S L730
+ 00001712 4908 SHLL2 R9
+ 00001714 L731:
+ draw.c 581 {
+ draw.c 582 if(blockI[0][ycount][xcount] == 1)
+ 00001714 6093 MOV R9,R0
+ 00001716 00CE MOV.L @(R0,R12),R0
+ 00001718 8801 CMP/EQ #1,R0
+ 0000171A 8B05 BF L732
+ draw.c 583 {
+ draw.c 584 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 1);
+ 0000171C 66F2 MOV.L @R15,R6
+ 0000171E 65B3 MOV R11,R5
+ 00001720 D372 MOV.L L801+4,R3 ; _normalfillbox
+ 00001722 E701 MOV #1,R7
+ 00001724 430B JSR @R3
+ 00001726 64E2 MOV.L @R14,R4
+ 00001728 L732:
+ 00001728 7C10 ADD #16,R12
+ 0000172A 6093 MOV R9,R0
+ 0000172C 00CE MOV.L @(R0,R12),R0
+ 0000172E 8801 CMP/EQ #1,R0
+ 00001730 8F06 BF/S L733
+ 00001732 7B01 ADD #1,R11
+ 00001734 66F2 MOV.L @R15,R6
+ 00001736 65B3 MOV R11,R5
+ 00001738 D36C MOV.L L801+4,R3 ; _normalfillbox
+ 0000173A E701 MOV #1,R7
+ 0000173C 430B JSR @R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 68
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000173E 64E2 MOV.L @R14,R4
+ 00001740 L733:
+ 00001740 7C10 ADD #16,R12
+ 00001742 6093 MOV R9,R0
+ 00001744 00CE MOV.L @(R0,R12),R0
+ 00001746 8801 CMP/EQ #1,R0
+ 00001748 8F06 BF/S L734
+ 0000174A 7B01 ADD #1,R11
+ 0000174C 66F2 MOV.L @R15,R6
+ 0000174E 65B3 MOV R11,R5
+ 00001750 D366 MOV.L L801+4,R3 ; _normalfillbox
+ 00001752 E701 MOV #1,R7
+ 00001754 430B JSR @R3
+ 00001756 64E2 MOV.L @R14,R4
+ 00001758 L734:
+ 00001758 7C10 ADD #16,R12
+ 0000175A 6093 MOV R9,R0
+ 0000175C 00CE MOV.L @(R0,R12),R0
+ 0000175E 8801 CMP/EQ #1,R0
+ 00001760 8F06 BF/S L735
+ 00001762 7B01 ADD #1,R11
+ 00001764 66F2 MOV.L @R15,R6
+ 00001766 65B3 MOV R11,R5
+ 00001768 D360 MOV.L L801+4,R3 ; _normalfillbox
+ 0000176A E701 MOV #1,R7
+ 0000176C 430B JSR @R3
+ 0000176E 64E2 MOV.L @R14,R4
+ 00001770 L735:
+ 00001770 52F1 MOV.L @(4,R15),R2
+ 00001772 7C10 ADD #16,R12
+ 00001774 3C22 CMP/HS R2,R12
+ 00001776 8FCD BF/S L731
+ 00001778 7B01 ADD #1,R11
+ 0000177A L730:
+ 0000177A 7A01 ADD #1,R10
+ 0000177C 3A83 CMP/GE R8,R10
+ 0000177E 8BBF BF L729
+ draw.c 585 }
+ draw.c 586 }
+ draw.c 587 }
+ draw.c 588 break;
+ 00001780 A0A8 BRA L724
+ 00001782 0009 NOP
+ 00001784 L496: ; case label
+ 00001784 D45A MOV.L L801+8,R4 ; _blockT
+ draw.c 589
+ draw.c 590 case 3 :
+ draw.c 591 for(xcount = 0; xcount < 3; xcount ++)
+ 00001786 6A93 MOV R9,R10
+ 00001788 2F42 MOV.L R4,@R15
+ 0000178A 6843 MOV R4,R8
+ 0000178C 7824 ADD #36,R8
+ 0000178E L736:
+ 0000178E 69D3 MOV R13,R9
+ 00001790 6BF2 MOV.L @R15,R11
+ 00001792 63A3 MOV R10,R3
+ 00001794 4308 SHLL2 R3
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 69
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00001796 62A3 MOV R10,R2
+ 00001798 1F32 MOV.L R3,@(8,R15)
+ draw.c 592 {
+ draw.c 593 for(ycount = 0; ycount < 3; ycount ++)
+ 0000179A 3B82 CMP/HS R8,R11
+ 0000179C 7204 ADD #4,R2
+ 0000179E 8D0E BT/S L737
+ 000017A0 1F21 MOV.L R2,@(4,R15)
+ 000017A2 L738:
+ draw.c 594 {
+ draw.c 595 if(blockT[0][ycount][xcount] == 1)
+ 000017A2 50F2 MOV.L @(8,R15),R0
+ 000017A4 00BE MOV.L @(R0,R11),R0
+ 000017A6 8801 CMP/EQ #1,R0
+ 000017A8 8B05 BF L739
+ draw.c 596 {
+ draw.c 597 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 2);
+ 000017AA E702 MOV #2,R7
+ 000017AC 56F1 MOV.L @(4,R15),R6
+ 000017AE 6593 MOV R9,R5
+ 000017B0 D34E MOV.L L801+4,R3 ; _normalfillbox
+ 000017B2 430B JSR @R3
+ 000017B4 64E2 MOV.L @R14,R4
+ 000017B6 L739:
+ 000017B6 7B0C ADD #12,R11
+ 000017B8 3B82 CMP/HS R8,R11
+ 000017BA 8FF2 BF/S L738
+ 000017BC 7901 ADD #1,R9
+ 000017BE L737:
+ 000017BE 7A01 ADD #1,R10
+ 000017C0 3AC3 CMP/GE R12,R10
+ 000017C2 8BE4 BF L736
+ draw.c 598 }
+ draw.c 599 }
+ draw.c 600 }
+ draw.c 601 break;
+ 000017C4 A086 BRA L724
+ 000017C6 0009 NOP
+ 000017C8 L497: ; case label
+ 000017C8 D44A MOV.L L801+12,R4 ; _blockJ
+ draw.c 602
+ draw.c 603 case 4 :
+ draw.c 604 for(xcount = 0; xcount < 3; xcount ++)
+ 000017CA 6A93 MOV R9,R10
+ 000017CC 1F42 MOV.L R4,@(8,R15)
+ 000017CE 6843 MOV R4,R8
+ 000017D0 7824 ADD #36,R8
+ 000017D2 L740:
+ 000017D2 69D3 MOV R13,R9
+ 000017D4 5BF2 MOV.L @(8,R15),R11
+ 000017D6 63A3 MOV R10,R3
+ 000017D8 4308 SHLL2 R3
+ 000017DA 62A3 MOV R10,R2
+ 000017DC 1F31 MOV.L R3,@(4,R15)
+ draw.c 605 {
+ draw.c 606 for(ycount = 0; ycount < 3; ycount ++)
+ 000017DE 3B82 CMP/HS R8,R11
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 70
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000017E0 7204 ADD #4,R2
+ 000017E2 8D0E BT/S L741
+ 000017E4 2F22 MOV.L R2,@R15
+ 000017E6 L742:
+ draw.c 607 {
+ draw.c 608 if(blockJ[0][ycount][xcount] == 1)
+ 000017E6 50F1 MOV.L @(4,R15),R0
+ 000017E8 00BE MOV.L @(R0,R11),R0
+ 000017EA 8801 CMP/EQ #1,R0
+ 000017EC 8B05 BF L743
+ draw.c 609 {
+ draw.c 610 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 3);
+ 000017EE E703 MOV #3,R7
+ 000017F0 66F2 MOV.L @R15,R6
+ 000017F2 6593 MOV R9,R5
+ 000017F4 D33D MOV.L L801+4,R3 ; _normalfillbox
+ 000017F6 430B JSR @R3
+ 000017F8 64E2 MOV.L @R14,R4
+ 000017FA L743:
+ 000017FA 7B0C ADD #12,R11
+ 000017FC 3B82 CMP/HS R8,R11
+ 000017FE 8FF2 BF/S L742
+ 00001800 7901 ADD #1,R9
+ 00001802 L741:
+ 00001802 7A01 ADD #1,R10
+ 00001804 3AC3 CMP/GE R12,R10
+ 00001806 8BE4 BF L740
+ draw.c 611 }
+ draw.c 612 }
+ draw.c 613 }
+ draw.c 614 break;
+ 00001808 A064 BRA L724
+ 0000180A 0009 NOP
+ 0000180C L498: ; case label
+ 0000180C D43A MOV.L L801+16,R4 ; _blockL
+ draw.c 615
+ draw.c 616 case 5 :
+ draw.c 617 for(xcount = 0; xcount < 3; xcount ++)
+ 0000180E 6A93 MOV R9,R10
+ 00001810 1F42 MOV.L R4,@(8,R15)
+ 00001812 6843 MOV R4,R8
+ 00001814 7824 ADD #36,R8
+ 00001816 L744:
+ 00001816 69D3 MOV R13,R9
+ 00001818 5BF2 MOV.L @(8,R15),R11
+ 0000181A 63A3 MOV R10,R3
+ 0000181C 4308 SHLL2 R3
+ 0000181E 62A3 MOV R10,R2
+ 00001820 1F31 MOV.L R3,@(4,R15)
+ draw.c 618 {
+ draw.c 619 for(ycount = 0; ycount < 3; ycount ++)
+ 00001822 3B82 CMP/HS R8,R11
+ 00001824 7204 ADD #4,R2
+ 00001826 8D0E BT/S L745
+ 00001828 2F22 MOV.L R2,@R15
+ 0000182A L746:
+ draw.c 620 {
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 71
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 621 if(blockL[0][ycount][xcount] == 1)
+ 0000182A 50F1 MOV.L @(4,R15),R0
+ 0000182C 00BE MOV.L @(R0,R11),R0
+ 0000182E 8801 CMP/EQ #1,R0
+ 00001830 8B05 BF L747
+ draw.c 622 {
+ draw.c 623 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 4);
+ 00001832 E704 MOV #4,R7
+ 00001834 66F2 MOV.L @R15,R6
+ 00001836 6593 MOV R9,R5
+ 00001838 D32C MOV.L L801+4,R3 ; _normalfillbox
+ 0000183A 430B JSR @R3
+ 0000183C 64E2 MOV.L @R14,R4
+ 0000183E L747:
+ 0000183E 7B0C ADD #12,R11
+ 00001840 3B82 CMP/HS R8,R11
+ 00001842 8FF2 BF/S L746
+ 00001844 7901 ADD #1,R9
+ 00001846 L745:
+ 00001846 7A01 ADD #1,R10
+ 00001848 3AC3 CMP/GE R12,R10
+ 0000184A 8BE4 BF L744
+ draw.c 624 }
+ draw.c 625 }
+ draw.c 626 }
+ draw.c 627 break;
+ 0000184C A042 BRA L724
+ 0000184E 0009 NOP
+ 00001850 L499: ; case label
+ 00001850 D42A MOV.L L801+20,R4 ; _blockZ
+ draw.c 628
+ draw.c 629 case 6 :
+ draw.c 630 for(xcount = 0; xcount < 3; xcount ++)
+ 00001852 6A93 MOV R9,R10
+ 00001854 1F42 MOV.L R4,@(8,R15)
+ 00001856 6843 MOV R4,R8
+ 00001858 7824 ADD #36,R8
+ 0000185A L748:
+ 0000185A 69D3 MOV R13,R9
+ 0000185C 5BF2 MOV.L @(8,R15),R11
+ 0000185E 63A3 MOV R10,R3
+ 00001860 4308 SHLL2 R3
+ 00001862 62A3 MOV R10,R2
+ 00001864 2F32 MOV.L R3,@R15
+ draw.c 631 {
+ draw.c 632 for(ycount = 0; ycount < 3; ycount ++)
+ 00001866 3B82 CMP/HS R8,R11
+ 00001868 7204 ADD #4,R2
+ 0000186A 8D0E BT/S L749
+ 0000186C 1F21 MOV.L R2,@(4,R15)
+ 0000186E L750:
+ draw.c 633 {
+ draw.c 634 if(blockZ[0][ycount][xcount] == 1)
+ 0000186E 60F2 MOV.L @R15,R0
+ 00001870 00BE MOV.L @(R0,R11),R0
+ 00001872 8801 CMP/EQ #1,R0
+ 00001874 8B05 BF L751
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 72
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ draw.c 635 {
+ draw.c 636 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 5);
+ 00001876 E705 MOV #5,R7
+ 00001878 56F1 MOV.L @(4,R15),R6
+ 0000187A 6593 MOV R9,R5
+ 0000187C D31B MOV.L L801+4,R3 ; _normalfillbox
+ 0000187E 430B JSR @R3
+ 00001880 64E2 MOV.L @R14,R4
+ 00001882 L751:
+ 00001882 7B0C ADD #12,R11
+ 00001884 3B82 CMP/HS R8,R11
+ 00001886 8FF2 BF/S L750
+ 00001888 7901 ADD #1,R9
+ 0000188A L749:
+ 0000188A 7A01 ADD #1,R10
+ 0000188C 3AC3 CMP/GE R12,R10
+ 0000188E 8BE4 BF L748
+ draw.c 637 }
+ draw.c 638 }
+ draw.c 639 }
+ draw.c 640 break;
+ 00001890 A020 BRA L724
+ 00001892 0009 NOP
+ 00001894 L500: ; case label
+ 00001894 D41A MOV.L L801+24,R4 ; _blockS
+ draw.c 641
+ draw.c 642 case 7 :
+ draw.c 643 for(xcount = 0; xcount < 3; xcount ++)
+ 00001896 6A93 MOV R9,R10
+ 00001898 2F42 MOV.L R4,@R15
+ 0000189A 6843 MOV R4,R8
+ 0000189C 7824 ADD #36,R8
+ 0000189E L752:
+ 0000189E 69D3 MOV R13,R9
+ 000018A0 6BF2 MOV.L @R15,R11
+ 000018A2 63A3 MOV R10,R3
+ 000018A4 4308 SHLL2 R3
+ 000018A6 62A3 MOV R10,R2
+ 000018A8 1F31 MOV.L R3,@(4,R15)
+ draw.c 644 {
+ draw.c 645 for(ycount = 0; ycount < 3; ycount ++)
+ 000018AA 3B82 CMP/HS R8,R11
+ 000018AC 7204 ADD #4,R2
+ 000018AE 8D0E BT/S L753
+ 000018B0 1F22 MOV.L R2,@(8,R15)
+ 000018B2 L754:
+ draw.c 646 {
+ draw.c 647 if(blockS[0][ycount][xcount] == 1)
+ 000018B2 50F1 MOV.L @(4,R15),R0
+ 000018B4 00BE MOV.L @(R0,R11),R0
+ 000018B6 8801 CMP/EQ #1,R0
+ 000018B8 8B05 BF L755
+ draw.c 648 {
+ draw.c 649 normalfillbox(pScreen, 22 + ycount , 4 + xcount, 6);
+ 000018BA E706 MOV #6,R7
+ 000018BC 56F2 MOV.L @(8,R15),R6
+ 000018BE 6593 MOV R9,R5
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 73
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000018C0 D30A MOV.L L801+4,R3 ; _normalfillbox
+ 000018C2 430B JSR @R3
+ 000018C4 64E2 MOV.L @R14,R4
+ 000018C6 L755:
+ 000018C6 7B0C ADD #12,R11
+ 000018C8 3B82 CMP/HS R8,R11
+ 000018CA 8FF2 BF/S L754
+ 000018CC 7901 ADD #1,R9
+ 000018CE L753:
+ 000018CE 7A01 ADD #1,R10
+ 000018D0 3AC3 CMP/GE R12,R10
+ 000018D2 8BE4 BF L752
+ 000018D4 L724:
+ draw.c 650 }
+ draw.c 651 }
+ draw.c 652 }
+ draw.c 653 break;
+ draw.c 654 }
+ draw.c 655 }
+ 000018D4 7F10 ADD #16,R15
+ 000018D6 4F26 LDS.L @R15+,PR
+ 000018D8 68F6 MOV.L @R15+,R8
+ 000018DA 69F6 MOV.L @R15+,R9
+ 000018DC 6AF6 MOV.L @R15+,R10
+ 000018DE 6BF6 MOV.L @R15+,R11
+ 000018E0 6CF6 MOV.L @R15+,R12
+ 000018E2 6DF6 MOV.L @R15+,R13
+ 000018E4 000B RTS
+ 000018E6 6EF6 MOV.L @R15+,R14
+ 000018E8 L801:
+ 000018E8 <00000000> .DATA.L _blockI
+ 000018EC <00000000> .DATA.L _normalfillbox
+ 000018F0 <00000000> .DATA.L _blockT
+ 000018F4 <00000000> .DATA.L _blockJ
+ 000018F8 <00000000> .DATA.L _blockL
+ 000018FC <00000000> .DATA.L _blockZ
+ 00001900 <00000000> .DATA.L _blockS
+D 00000000 _numbers: ; static: numbers
+ 00000000 0000000100 .DATA.L H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000010000 + H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0001000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,
+ 0100000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000100 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000010000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0100000001 + H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000010000 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0001000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0100000001 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0000000000 + H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,
+ 0000010000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,
+ 0000000000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,
+ 0000000001 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,
+ 0000000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0001000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 74
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000000100 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000001,H'00000001
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 75
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 00000258 _character: ; static: character
+ 00000258 0000000000 .DATA.L H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000010000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0100000000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000000100 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000010000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0001000000 + H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0100000001 + H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0000010000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,
+ 0001000000 + H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,
+ 0000000001 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 76
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000100 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,
+ 0000010000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0100000000 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000000100 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000010000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,
+ 0001000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0000000001 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000010000 + H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0001000000 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0100000000 + H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000010000 + H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0001000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0100000000 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000000000 + H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,
+ 0000010000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000000,H'00000001
+ 0000000001
+ 0000000000
+ 0000000000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 77
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 78
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000000
+ 000001
+ 000005A8 0000000000 .DATA.L H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000010000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0100000001 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000010000 + H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0001000000 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0000000001 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0100000001 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 79
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000010000 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000000000 + H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0100000001 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000000100 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0001000000 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000100 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,
+ 0000000000 + H'00000001,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000001 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000010000 + H'00000001,H'00000001,H'00000001
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 80
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0000000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 81
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0001
+ 00000870 _blockO: ; static: blockO
+ 00000870 0000000000 .DATA.L H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,
+ 0000010000 + H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,
+ 0001000000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000000100 + H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0000000001
+ 0000000100
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000
+ 00000930 _blockJ: ; static: blockJ
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 82
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000930 0000000100 .DATA.L H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000000000 + H'00000000,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0100000001 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,
+ 0000000100 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0000000000 + H'00000000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 00000000
+ 000009C0 _blockT: ; static: blockT
+ 000009C0 0000000000 .DATA.L H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0100000001 + H'00000001,H'00000001,H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000100 + H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000100
+ 0000010000
+ 0000000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 83
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000001
+ 00000000
+ 00000A50 _blockL: ; static: blockL
+ 00000A50 0000000000 .DATA.L H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,
+ 0000000000 + H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0001000000 + H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,H'00000000,
+ 0100000001 + H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000100 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0000000000 + H'00000000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000001
+ 00000000
+ 00000AE0 _blockI: ; static: blockI
+ 00000AE0 0000000000 .DATA.L H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,H'00000001,H'00000001,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000000000 + H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000001 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,
+ 0000000100 + H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,H'00000001,
+ 0001000000 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,
+ 0000000000 + H'00000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 84
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000000100
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0001000000
+ 0100000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000001
+ 0000000000
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000000000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 00
+ 00000BE0 _blockZ: ; static: blockZ
+ 00000BE0 0000000100 .DATA.L H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000001,H'00000000,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000000001 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,
+ 0000000100 + H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,H'00000000,H'00000001,
+ 0000000000 + H'00000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000010000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000100
+ 0000010000
+ 0000000000
+ 0000000001
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000001
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 85
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000000
+ 00000C70 _blockS: ; static: blockS
+ 00000C70 0000000000 .DATA.L H'00000000,H'00000001,H'00000001,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000010000 + H'00000000,H'00000000,H'00000000,H'00000001,H'00000000,H'00000000,H'00000001,
+ 0001000000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000000,H'00000001,H'00000001,
+ 0100000001 + H'00000001,H'00000001,H'00000000,H'00000000,H'00000000,H'00000000,H'00000000,
+ 0000000000 + H'00000001,H'00000000,H'00000000,H'00000001,H'00000001,H'00000000,H'00000000,
+ 0000000000 + H'00000001
+ 0000000000
+ 0000000000
+ 0000000100
+ 0000000000
+ 0000000000
+ 0100000001
+ 0000000000
+ 0000000000
+ 0001000000
+ 0000000001
+ 0000000100
+ 0000010000
+ 0001000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0000000000
+ 0100000000
+ 0000000000
+ 0000010000
+ 0001000000
+ 0000000000
+ 00000001
+ 00000D00 _spritesheed: ; static: spritesheed
+ 00000D00 0000000300 .DATA.L H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000000,
+ 0000030000 + H'00000000,H'00000000,H'00000003,H'00000003,H'00000000,H'00000003,H'00000000,
+ 0003000000 + H'00000003,H'00000003,H'00000000,H'00000000,H'00000000,H'00000003,H'00000003,
+ 0300000003 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000300 + H'00000003,H'00000003,H'00000003,H'00000001,H'00000001,H'00000001,H'00000003,
+ 0000000000 + H'00000003,H'00000001,H'00000000,H'00000001,H'00000003,H'00000003,H'00000001,
+ 0000000000 + H'00000001,H'00000001,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000003 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000300 + H'00000001,H'00000001,H'00000001,H'00000003,H'00000003,H'00000001,H'00000000,
+ 0000000000 + H'00000002,H'00000003,H'00000003,H'00000002,H'00000002,H'00000002,H'00000003,
+ 0003000000 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000003 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000002,H'00000002,H'00000002,
+ 0000000300 + H'00000003,H'00000003,H'00000002,H'00000002,H'00000002,H'00000003,H'00000003,
+ 0000000000 + H'00000002,H'00000002,H'00000002,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000000 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0000000003 + H'00000003,H'00000001,H'00000002,H'00000002,H'00000003,H'00000003,H'00000002,
+ 0000000300 + H'00000002,H'00000001,H'00000003,H'00000003,H'00000002,H'00000001,H'00000002,
+ 0000030000 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0003000000 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000001,H'00000001,
+ 0300000003 + H'00000001,H'00000003,H'00000003,H'00000001,H'00000003,H'00000001,H'00000003,
+ 0000000300 + H'00000003,H'00000001,H'00000001,H'00000001,H'00000003,H'00000003,H'00000003,
+ 0000030000 + H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,
+ 0003000000 + H'00000003,H'00000003,H'00000002,H'00000002,H'00000002,H'00000003,H'00000003,
+ 0300000003 + H'00000002,H'00000000,H'00000002,H'00000003,H'00000003,H'00000002,H'00000002,
+ 0000000300 + H'00000002,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003,H'00000003
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 86
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0000010000
+ 0001000000
+ 0100000003
+ 0000000300
+ 0000010000
+ 0000000000
+ 0100000003
+ 0000000300
+ 0000010000
+ 0001000000
+ 0100000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000010000
+ 0001000000
+ 0100000003
+ 0000000300
+ 0000010000
+ 0000000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000030000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 87
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000010000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0100000003
+ 0000000300
+ 0000020000
+ 0001000000
+ 0200000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000010000
+ 0001000000
+ 0100000003
+ 0000000300
+ 0000010000
+ 0003000000
+ 0100000003
+ 0000000300
+ 0000010000
+ 0001000000
+ 0100000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000030000
+ 0003000000
+ 0300000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0000000000
+ 0200000003
+ 0000000300
+ 0000020000
+ 0002000000
+ 0200000003
+ 0000000300
+ 0000030000
+ 0003000000
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 88
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 0300000003
+C 00000000 L411:
+ 00000000 4C56 .SDATA "LV"
+ 00000002 00 .DATA.B H'00
+ 00000003 00000001 .RES.B 1
+ 00000004 L412:
+ 00000004 505453 .SDATA "PTS"
+ 00000007 00 .DATA.B H'00
+ 00000008 L413:
+ 00000008 4C494E45 .SDATA "LINE"
+ 0000000C 00 .DATA.B H'00
+ 0000000D 00000001 .RES.B 1
+ 0000000E 00000002 .RES.W 1
+ 00000010 L423:
+ 00000010 4E455854 .SDATA "NEXT"
+ 00000014 00 .DATA.B H'00
+ 00000015 00000001 .RES.B 1
+ 00000016 00000002 .RES.W 1
+ 00000018 L446:
+ 00000018 484F4C44 .SDATA "HOLD"
+ 0000001C 00 .DATA.B H'00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 0
+NUMBER OF WARNINGS: 5
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 655
+
+
+
+******* SECTION SIZE INFORMATION *******
+
+PROGRAM SECTION (P): 00001904 Byte(s)
+CONSTANT SECTION (C): 0000001D Byte(s)
+DATA SECTION (D): 00000FBC Byte(s)
+BSS SECTION (B): 00000000 Byte(s)
+
+ TOTAL PROGRAM SIZE: 000028DD Byte(s)
+
+
+
+********** LABEL INFORMATION ***********
+
+NUMBER OF EXTERNAL REFERENCE SYMBOLS: 21
+NUMBER OF EXTERNAL DEFINITION SYMBOLS: 20
+NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 335
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk48E4.tmp
+
diff --git a/Debug/draw.obj b/Debug/draw.obj Binary files differnew file mode 100644 index 0000000..ff9caee --- /dev/null +++ b/Debug/draw.obj diff --git a/Debug/global.lst b/Debug/global.lst new file mode 100644 index 0000000..f658553 --- /dev/null +++ b/Debug/global.lst @@ -0,0 +1,203 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:13 PAGE 1
+
+************ OBJECT LISTING ************
+
+FILE NAME: G:\Casio SDK\Projekte\Matris\global.c
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ global.c 1 #include "global.h"
+ global.c 2
+ global.c 3 char* pScreen;
+ global.c 4 //pointer to the 3 graybuffers
+ global.c 5
+ global.c 6 char right = True;
+ global.c 7 char left = True;
+ global.c 8 //can move?
+ global.c 9
+ global.c 10 char changemap[21][10] = {0};
+ global.c 11 char globalmap [20][10] = {0};
+ global.c 12 //the two brickmaps: globalmap is the visible one
+ global.c 13
+ global.c 14 char block;
+ global.c 15 //block type
+ global.c 16 int xpos = 7, ypos = 3;
+ global.c 17 char dir;
+ global.c 18 //position and direction of brick
+ global.c 19
+ global.c 20 char level;
+ global.c 21 //current level
+ global.c 22
+ global.c 23 unsigned int points = 0;
+ global.c 24 //points
+ global.c 25
+ global.c 26 char nextdir = Down;
+ global.c 27 //the direction for the next round
+ global.c 28
+ global.c 29 char nextblock = 1;
+ global.c 30 //the next block
+ global.c 31
+ global.c 32 char hold = 0;
+ global.c 33 //the stored brick
+D 00000000 _right: ; static: right
+ 00000000 01 .DATA.B H'01
+ 00000001 _left: ; static: left
+ 00000001 01 .DATA.B H'01
+ 00000002 _changemap: ; static: changemap
+ 00000002 00 .DATA.B H'00
+ 00000003 000000D101 .DATAB.B 209,0
+ 00
+ 000000D4 _globalmap: ; static: globalmap
+ 000000D4 00 .DATA.B H'00
+ 000000D5 000000C701 .DATAB.B 199,0
+ 00
+ 0000019C _xpos: ; static: xpos
+ 0000019C 00000007 .DATA.L H'00000007
+ 000001A0 _ypos: ; static: ypos
+ 000001A0 00000003 .DATA.L H'00000003
+ 000001A4 _points: ; static: points
+ 000001A4 00000000 .DATA.L H'00000000
+ 000001A8 _nextdir: ; static: nextdir
+ 000001A8 00 .DATA.B H'00
+ 000001A9 _nextblock: ; static: nextblock
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:13 PAGE 2
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 000001A9 01 .DATA.B H'01
+ 000001AA _hold: ; static: hold
+ 000001AA 00 .DATA.B H'00
+B 00000000 _pScreen: ; static: pScreen
+ 00000000 00000004 .RES.L 1
+ 00000004 _block: ; static: block
+ 00000004 00000001 .RES.B 1
+ 00000005 _dir: ; static: dir
+ 00000005 00000001 .RES.B 1
+ 00000006 _level: ; static: level
+ 00000006 00000001 .RES.B 1
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:13 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 0
+NUMBER OF WARNINGS: 0
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 33
+
+
+
+******* SECTION SIZE INFORMATION *******
+
+PROGRAM SECTION (P): 00000000 Byte(s)
+CONSTANT SECTION (C): 00000000 Byte(s)
+DATA SECTION (D): 000001AB Byte(s)
+BSS SECTION (B): 00000007 Byte(s)
+
+ TOTAL PROGRAM SIZE: 000001B2 Byte(s)
+
+
+
+********** LABEL INFORMATION ***********
+
+NUMBER OF EXTERNAL REFERENCE SYMBOLS: 0
+NUMBER OF EXTERNAL DEFINITION SYMBOLS: 14
+NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 14
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk4B55.tmp
+
diff --git a/Debug/global.obj b/Debug/global.obj Binary files differnew file mode 100644 index 0000000..c2dae63 --- /dev/null +++ b/Debug/global.obj diff --git a/Debug/key.lst b/Debug/key.lst new file mode 100644 index 0000000..5eab91c --- /dev/null +++ b/Debug/key.lst @@ -0,0 +1,335 @@ +SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 1
+
+************ OBJECT LISTING ************
+
+FILE NAME: G:\Casio SDK\Projekte\Matris\key.c
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ key.c 1 int OSVersionAsInt(void)
+P 00000000 _OSVersionAsInt: ; function: OSVersionAsInt
+ ; frame size=20
+ 00000000 4F22 STS.L PR,@-R15
+ 00000002 7FF0 ADD #-16,R15
+ key.c 2 {
+ key.c 3 unsigned char mainversion;
+ key.c 4 unsigned char minorversion;
+ key.c 5 unsigned short release;
+ key.c 6 unsigned short build;
+ key.c 7 GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
+ 00000004 D333 MOV.L L259,R3 ; _GlibGetOSVersionInfo
+ 00000006 67F3 MOV R15,R7
+ 00000008 770C ADD #12,R7
+ 0000000A 66F3 MOV R15,R6
+ 0000000C 7608 ADD #8,R6
+ 0000000E 65F3 MOV R15,R5
+ 00000010 7504 ADD #4,R5
+ 00000012 430B JSR @R3
+ 00000014 64F3 MOV R15,R4
+ key.c 8 return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( releas
+ +e & 0x0000FFFF );
+ 00000016 60F0 MOV.B @R15,R0
+ 00000018 D32F MOV.L L259+4,R3 ; H'FF000000
+ 0000001A 600C EXTU.B R0,R0
+ 0000001C D22F MOV.L L259+8,R2 ; H'00FF0000
+ 0000001E 4028 SHLL16 R0
+ 00000020 4018 SHLL8 R0
+ 00000022 2039 AND R3,R0
+ 00000024 6103 MOV R0,R1
+ 00000026 84F4 MOV.B @(4,R15),R0
+ 00000028 600C EXTU.B R0,R0
+ 0000002A 4028 SHLL16 R0
+ 0000002C 2029 AND R2,R0
+ 0000002E 201B OR R1,R0
+ 00000030 6103 MOV R0,R1
+ 00000032 85F4 MOV.W @(8,R15),R0
+ 00000034 600D EXTU.W R0,R0
+ key.c 9 }
+ 00000036 7F10 ADD #16,R15
+ 00000038 4F26 LDS.L @R15+,PR
+ 0000003A 000B RTS
+ 0000003C 201B OR R1,R0
+ key.c 10
+ key.c 11 #define isOS2 (OSVersionAsInt() >= 0x02020000)
+ key.c 12
+ key.c 13 const unsigned short* keyboardregister = (unsigned short*)0xA44B0000;
+ key.c 14
+ key.c 15 unsigned short key[8];
+ key.c 16
+ key.c 17 int KeyDown(int keycode)
+ 0000003E _KeyDown: ; function: KeyDown
+ ; frame size=32
+ ; used runtime library name:
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 2
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ ; __divls, __modls
+ 0000003E 2FE6 MOV.L R14,@-R15
+ 00000040 2FD6 MOV.L R13,@-R15
+ 00000042 4F22 STS.L PR,@-R15
+ 00000044 7FEC ADD #-20,R15
+ key.c 18 {
+ key.c 19 if(isOS2)
+ 00000046 BFDB BSR _OSVersionAsInt
+ 00000048 6E43 MOV R4,R14
+ 0000004A D225 MOV.L L259+12,R2 ; H'02020000
+ 0000004C 3023 CMP/GE R2,R0
+ 0000004E 8B27 BF L255
+ key.c 20 {
+ key.c 21 int row, col, word, bit;
+ key.c 22
+ key.c 23 row = keycode%10;
+ 00000050 D324 MOV.L L259+16,R3 ; __modls
+ 00000052 E50A MOV #10,R5
+ 00000054 61E3 MOV R14,R1
+ 00000056 430B JSR @R3
+ 00000058 6053 MOV R5,R0
+ 0000005A 6403 MOV R0,R4
+ key.c 24 col = keycode/10-1;
+ 0000005C D322 MOV.L L259+20,R3 ; __divls
+ 0000005E 61E3 MOV R14,R1
+ 00000060 430B JSR @R3
+ 00000062 6053 MOV R5,R0
+ key.c 25 word = row>>1;
+ key.c 26 bit = col + 8*(row&1);
+ key.c 27
+ key.c 28 memcpy(&key, keyboardregister, 8 * sizeof(unsigned short));
+ 00000064 D221 MOV.L L259+24,R2 ; _keyboardregister
+ 00000066 6503 MOV R0,R5
+ 00000068 75FF ADD #-1,R5
+ 0000006A 6143 MOV R4,R1
+ 0000006C 4121 SHAR R1
+ 0000006E E301 MOV #1,R3
+ 00000070 1F11 MOV.L R1,@(4,R15)
+ 00000072 E610 MOV #16,R6
+ 00000074 D11F MOV.L L259+32,R1 ; _memcpy
+ 00000076 2439 AND R3,R4
+ 00000078 4408 SHLL2 R4
+ 0000007A 4400 SHLL R4
+ 0000007C 345C ADD R5,R4
+ 0000007E 2F42 MOV.L R4,@R15
+ 00000080 D41B MOV.L L259+28,R4 ; _key
+ 00000082 410B JSR @R1
+ 00000084 6522 MOV.L @R2,R5
+ key.c 29
+ key.c 30 return (0 != (key[word] & 1<<bit));
+ 00000086 E201 MOV #1,R2
+ 00000088 50F1 MOV.L @(4,R15),R0
+ 0000008A 4000 SHLL R0
+ 0000008C D118 MOV.L L259+28,R1 ; _key
+ 0000008E 001D MOV.W @(R0,R1),R0
+ 00000090 63F2 MOV.L @R15,R3
+ 00000092 600D EXTU.W R0,R0
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 3
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000094 423C SHAD R3,R2
+ 00000096 2029 AND R2,R0
+ 00000098 2008 TST R0,R0
+ 0000009A 0029 MOVT R0
+ 0000009C A015 BRA L257
+ 0000009E CA01 XOR #1,R0
+ 000000A0 L255:
+ key.c 31 }
+ key.c 32 else
+ key.c 33 {
+ key.c 34 unsigned char buffer[12];
+ key.c 35 KBD_PRGM_GetKey( buffer );
+ 000000A0 D115 MOV.L L259+36,R1 ; _KBD_PRGM_GetKey
+ 000000A2 6DF3 MOV R15,R13
+ 000000A4 7D08 ADD #8,R13
+ 000000A6 410B JSR @R1
+ 000000A8 64D3 MOV R13,R4
+ key.c 36 return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 ) == keycode;
+ 000000AA 84D1 MOV.B @(1,R13),R0
+ 000000AC 600C EXTU.B R0,R0
+ 000000AE C90F AND #15,R0
+ 000000B0 6303 MOV R0,R3
+ 000000B2 4008 SHLL2 R0
+ 000000B4 303C ADD R3,R0
+ 000000B6 4000 SHLL R0
+ 000000B8 6203 MOV R0,R2
+ 000000BA E3FC MOV #-4,R3
+ 000000BC 84D2 MOV.B @(2,R13),R0
+ 000000BE 600C EXTU.B R0,R0
+ 000000C0 C9F0 AND #240,R0
+ 000000C2 403C SHAD R3,R0
+ 000000C4 302C ADD R2,R0
+ 000000C6 30E0 CMP/EQ R14,R0
+ 000000C8 0029 MOVT R0
+ key.c 37 }
+ key.c 38 }
+ 000000CA L257:
+ 000000CA 7F14 ADD #20,R15
+ 000000CC 4F26 LDS.L @R15+,PR
+ 000000CE 6DF6 MOV.L @R15+,R13
+ 000000D0 000B RTS
+ 000000D2 6EF6 MOV.L @R15+,R14
+ 000000D4 L259:
+ 000000D4 <00000000> .DATA.L _GlibGetOSVersionInfo
+ 000000D8 FF000000 .DATA.L H'FF000000
+ 000000DC 00FF0000 .DATA.L H'00FF0000
+ 000000E0 02020000 .DATA.L H'02020000
+ 000000E4 <00000000> .DATA.L __modls
+ 000000E8 <00000000> .DATA.L __divls
+ 000000EC <00000000> .DATA.L _keyboardregister
+ 000000F0 <00000000> .DATA.L _key
+ 000000F4 <00000000> .DATA.L _memcpy
+ 000000F8 <00000000> .DATA.L _KBD_PRGM_GetKey
+ key.c 39
+D 00000000 _keyboardregister: ; static: keyboardregister
+ 00000000 A44B0000 .DATA.L H'A44B0000
+B 00000000 _key: ; static: key
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 4
+
+
+SCT OFFSET CODE C LABEL INSTRUCTION OPERAND COMMENT
+
+ 00000000 00000010 .RES.W 8
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+SH SERIES C/C++ Compiler (Ver. 6.0C) 02-Apr-2013 12:26:12 PAGE 1
+
+
+******** STATISTICS INFORMATION ********
+
+
+********** ERROR INFORMATION ***********
+
+NUMBER OF ERRORS: 0
+NUMBER OF WARNINGS: 0
+
+
+
+
+******* SOURCE LINE INFORMATION ********
+
+COMPILED SOURCE LINE: 39
+
+
+
+******* SECTION SIZE INFORMATION *******
+
+PROGRAM SECTION (P): 000000FC Byte(s)
+CONSTANT SECTION (C): 00000000 Byte(s)
+DATA SECTION (D): 00000004 Byte(s)
+BSS SECTION (B): 00000010 Byte(s)
+
+ TOTAL PROGRAM SIZE: 00000110 Byte(s)
+
+
+
+********** LABEL INFORMATION ***********
+
+NUMBER OF EXTERNAL REFERENCE SYMBOLS: 5
+NUMBER OF EXTERNAL DEFINITION SYMBOLS: 4
+NUMBER OF INTERNAL/EXTERNAL SYMBOLS: 12
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+*** COMMAND PARAMETER ***
+
+
+ -subcommand=C:\Users\Timo\AppData\Local\Temp\hmk46D1.tmp
+
diff --git a/Debug/key.obj b/Debug/key.obj Binary files differnew file mode 100644 index 0000000..0a6fa3a --- /dev/null +++ b/Debug/key.obj diff --git a/FXSH_Build.bat b/FXSH_Build.bat new file mode 100644 index 0000000..00c3649 --- /dev/null +++ b/FXSH_Build.bat @@ -0,0 +1,22 @@ +@echo off +rem Do not edit! This batch file is created by CASIO fx-9860G SDK. + +if exist debug\*.obj del debug\*.obj +if exist MATRIS.G1A del MATRIS.G1A + +cd debug +if exist FXADDINror.bin del FXADDINror.bin +"G:\Casio SDK\OS\SH\Bin\Hmake.exe" Addin.mak +cd .. +if not exist debug\FXADDINror.bin goto error + +"G:\Casio SDK\Tools\MakeAddinHeader363.exe" "G:\Casio SDK\Projekte\Matris" +if not exist MATRIS.G1A goto error +echo Build has completed. +goto end + +:error +echo Build was not successful. + +:end + diff --git a/INIT/CasioRAM.mem b/INIT/CasioRAM.mem Binary files differnew file mode 100644 index 0000000..665bfc6 --- /dev/null +++ b/INIT/CasioRAM.mem diff --git a/INIT/CasioRAMCPU.mem b/INIT/CasioRAMCPU.mem Binary files differnew file mode 100644 index 0000000..fd09ac7 --- /dev/null +++ b/INIT/CasioRAMCPU.mem diff --git a/INIT/CasioROM.mem b/INIT/CasioROM.mem Binary files differnew file mode 100644 index 0000000..fdb84e1 --- /dev/null +++ b/INIT/CasioROM.mem diff --git a/INIT/CasioUserROM.mem b/INIT/CasioUserROM.mem Binary files differBinary files differnew file mode 100644 index 0000000..516e252 --- /dev/null +++ b/INIT/CasioUserROM.mem @@ -1,637 +1,635 @@ -/*
- * Matris (C) by Casimo, summer 2012
- * licensed as GPLv3+
- */
-
-#include "stdio.h"
-#include "key.h"
-#include "draw.h"
-#include "global.h"
-
-short*APP_EnableRestart()
-{
- unsigned int ea;
- unsigned int j;
- short*pEnableRestartFlag;
- ea = *(unsigned int*)0x8001007C;
- ea += 0x0490*4;
- if ( ea < 0x8001007C ) return 0;
- if ( ea > 0x81000000 ) return 0;
- ea = *(unsigned int*)( ea );
- if ( ea < 0x8001007C ) return 0;
- if ( ea > 0x81000000 ) return 0;
- j = *(unsigned char*)( ea + 1 );
- j *= 4;
- ea = ( ea + j + 4 ) & 0xFFFFFFFC;
- if ( ea < 0x8001007C ) return 0;
- if ( ea > 0x81000000 ) return 0;
- pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 );
- if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0;
- if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
- return pEnableRestartFlag;
-}
-
-//restart addin after return 1
-
-static unsigned int seed = 123456789;
-unsigned int kiss()
-{
- // interner Zustand
- static unsigned int y = 362436000;
- static unsigned int z = 521288629;
- static unsigned int c = 7654321;
-
- unsigned long t;
-
- // Linearer Kongruenzgenerator
- seed = 69069 * seed + 12345;
-
- // Xorshift
- y ^= y << 13;
- y ^= y >> 17;
- y ^= y << 5;
-
- // Multiply-with-carry
- t = (unsigned long)698769069 * z + c;
- c = t >> 32;
- z = (unsigned int) t;
-
- return seed + y + z;
-}
-
-void seedkiss()
-{
- seed = RTC_GetTicks();
-}
-
-//kiss is a random number generator
-
-char *Disp_GetVRAMPtr(void);
-void DrawLineVRAM(int x1, int y1, int x2, int y2);
-void AllClr_DD(void);
-void AllClr_VRAM(void);
-void AllClr_DDVRAM(void);
-void locate(int x, int y);
-void Print(const unsigned char *str);
-int Timer_Install(int TimerID, void (*handler)(void), int delay);
-int Timer_Uninstall(int TimerID);
-int Timer_Start(int TimerID);
-void App_RUN_MAT();
-
-//some prototypes
-
-char swit;
-
-char pause = False;
-//pause the game
-
-char quit = False;
-
-char levelchanged = False;
-//has the level changed during two actions?
-
-char exit = False;
-
-char ready;
-
-char onoff = True;
-//used for timers
-
-char canswap;
-//brick already swapped?
-
-char slowyposdown = 0;
-
-char connected;
-//multiplayer activated?
-
-unsigned char receiveline = 0;
-unsigned char sendline = 0;
-//what to send or receive?
-
-char cantrans = False;
-//allowed to transfer?
-
-//taken from MonochromeLib by PierrotLL
-
-void drawbuffer(char *buffer)
-{
- char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
- int i, j;
- for(i=0 ; i<64 ; i++)
- {
- *LCD_register_selector = 4;
- *LCD_data_register = i|192;
- *LCD_register_selector = 4;
- *LCD_data_register = 0;
- *LCD_register_selector = 7;
- for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++;
- }
-}
-
-void RestGray(void)
-{
- drawbuffer(pScreen);
- drawbuffer(pScreen + 1024);
- drawbuffer(pScreen + 2048);
-}
-
-
-void Disconnect()
-{
- Serial_Close(1);
- connected = False;
-}
-
-void TeacherMode()
-{
- Timer_Uninstall(6);
- Timer_Uninstall(7);
- Disconnect();
-
- App_RUN_MAT();
-}
-
-int round(float num)
-{
- return (int) (num + 0.5);
-}
-
-void clrbuffer(char *buffer)
-{
- memset(buffer, 0, 3072);
-}
-
-
-void CreateBlock()
-{
- block = nextblock;
- canswap = True;
- nextblock = (kiss() % 7) + 1;
- xpos = 7;
- ypos = 3;
- dir = 0;
- left = True;
- right = True;
- cantrans = True;
-}
-
-void ResetValues()
-{
- int x,y;
-
- char text[30];
-
- memset(&changemap, 0, 210);
- memset(&globalmap, 0, 210);
-
- ypos = 3;
- xpos = 0;
- block = 0;
- onoff = True;
- levelchanged = False;
- right = True;
- left = True;
- hold = 0;
- exit = False;
- nextdir = Down;
- nextblock = (kiss() % 7) + 1;
- CreateBlock();
- clrbuffer(pScreen);
- Timer_Uninstall(6);
- Timer_Uninstall(7);
- ready = True;
- connected = False;
-
- AllClr_DDVRAM();
-
- PopUpWin(2);
- sprintf(&text, "Points: %d", points);
- locate(3, 3);
- Print(&text);
- sprintf(&text, "Level: %d", level);
- locate(3, 4);
- Print(&text);
- PutDisp_DD();
-
- points = 0;
- level = 0;
-
- while(!KeyDown(31));
-}
-
-void Transfer()
-{
- int xcount, ycount;
- char space = kiss() % 10; //where is the hole?
-
- if(connected == True)
- {
- if(receiveline > sendline)
- {
- //if there are lines arriving, but there can be send lines back, erase the lines, for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received
- receiveline -= sendline;
- sendline = 0;
- }
- else
- {
- sendline -= receiveline;
- receiveline = 0;
- }
- if(sendline > 0)
- {
- while(Serial_BufferedTransmitOneByte(sendline) != 0);
- //send the number of lines
- sendline = 0;
- }
- if(receiveline > 0)
- {
- for(ycount = 0; ycount < 20 - receiveline; ycount++)
- {
- for(xcount = 0; xcount < 10; xcount++)
- {
- globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount];
- //move all lines upwards
- }
- }
-
- for(ycount = 19; ycount > 19 - receiveline; ycount --)
- {
- for(xcount = 0; xcount < 10; xcount ++)
- {
- globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) + 1;
- //add lines at the bottom
- }
- }
- receiveline = 0;
- }
- }
-}
-
-void receive(void)
-{
- unsigned char receiveadd = 0;
-
- if(Serial_ReadOneByte(&receiveadd) != 0)
- {
- receiveadd = 0;
- }
-
- receiveline += (receiveadd > 20)?0:receiveadd;
-}
-
-void Connect()
-{
- unsigned char connstart = 111;
- unsigned char answer;
- char open_mode[6];
-
- PopUpWin(1);
- locate( 5 , 4);
- Print("Connecting...");
- PutDisp_DD();
-
- open_mode[ 0 ] = 0; // always 0
- open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=115200 baud
- open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even
- open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit
- open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two
- open_mode[ 5 ] = 0; // always 0
-
- Serial_Open( &open_mode );
-
- do
- {
- Serial_BufferedTransmitOneByte(connstart);
- Serial_ReadOneByte(&answer);
- }while(answer != connstart && !KeyDown(47));
-
- if(!KeyDown(47))connected = True;
-
- if(connected != True)
- {
- Disconnect();
- }
-}
-
-void SwapPieces()
-{
- char save;
- if(canswap == True)
- {
- save = block;
- if(hold == 0)
- {
- block = nextblock;
- nextblock = (kiss() % 7) + 1;
- }
- else
- {
- block = hold;
- }
- hold = save;
- xpos = 7;
- ypos = 3;
- dir = 0;
- }
- canswap = False;
-}
-
-void Rotate()
-{
- if(++dir == 4)
- {
- dir = 0;
- }
-
- if(DrawSprite() == False)
- {
- dir = (dir == 0)? 3 : dir - 1;
- }
-}
-
-void MoveBlock()
-{
- switch (nextdir)
- {
- case Left : if(left == True) {xpos ++;} nextdir = Down;break;
- case Right: if(right == True){xpos --;}nextdir = Down;break;
- case Rot : Rotate();nextdir = Down;break;
- case Swap: SwapPieces();nextdir = Down;break;
- }
-
- if(nextdir == Fast && (int)slowyposdown == slowyposdown)
- {
- points += 1;
- }
-}
-
-void CheckPoints()
-{
- char typecount = 0;
- char oldlevel;
- int xcount, ycount;
- int ycount2, ycount3;
- char fulllinecount = 0;
-
- for(xcount = 0; xcount < 10; xcount ++)
- {
- if(globalmap[0][xcount] != 0)
- {
- exit = True;
- //game over
- }
- }
-
- for(ycount = 0; ycount < 20; ycount ++)
- {
- fulllinecount = 0;
- for(xcount = 0; xcount < 10; xcount ++)
- {
- if(globalmap[ycount][xcount] != 0)
- {
- fulllinecount ++;
- }
- else
- {
- break;
- }
- }
-
- if(fulllinecount == 10)
- {
- typecount ++;
-
- //1: single, 2: double, 3: triple line, 4: tetris (maximum)
-
- for(ycount2 = ycount; ycount2 > 0; ycount2 --)
- {
- for(xcount = 0; xcount < 10; xcount ++)
- {
- globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount];
- //move averything
- }
- }
-
- line(pScreen, 0 , 0 , 81 , 0, 1);
- line(pScreen, 0 , 0 , 0 , 41, 1);
- line(pScreen, 81 , 0 , 81 , 41, 1);
- line(pScreen, 81 , 41 , 0 , 41, 1);
-
- for(ycount3 = 0; ycount3 < 20; ycount3 ++)
- {
- for(xcount = 0; xcount < 10; xcount ++)
- {
- if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] != 0)
- {
- fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcount] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1);
- }
- }
- }
- }
- }
- if(typecount > 0)
- {
- int blink;
-
- points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount == 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0;
- //increment points
-
- sendline = (typecount == 4)? 4 : typecount - 1;
- //send a line, if not tetris send lines - 1
- oldlevel = level;
- level += typecount;
- if((int)(level / 10) != (int)(oldlevel / 10) && level < 200)
- {
- levelchanged = True;
- //level = round cleared lines / 10
- }
- }
- Transfer();
-}
-
-void ReadKey()
-{
- nextdir =Down;
-
- if(KeyDown(38)) nextdir = Rot;
- if(KeyDown(37)) nextdir = Left ;
- if(KeyDown(28)) nextdir = Right;
- if(KeyDown(27)) nextdir = Fast;
- if(KeyDown(47)) exit = True;
- if(KeyDown(26)) nextdir = Swap;
- if(KeyDown(31)) TeacherMode();
- if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));}
-}
-
-void Main(void)
-{
- cantrans = False;
- ready = False;
- if(pause == False)
- {
- receive();
- ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0;
- if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdown % 10 == 0)
- {
- MoveBlock();
- DrawBlock();
- if(cantrans == True)
- {
- CheckPoints();
- DrawBlock();
- }
- }
- slowyposdown++;
- }
- ready = True;
- drawNumber(pScreen, connected, 0, 62);
- drawNumber(pScreen + 1024, connected, 0, 62);
- drawNumber(pScreen + 2048, connected, 0, 62);
-}
-
-void CallMain(void)
-{
- ReadKey();
- if(nextdir == Fast && onoff == False)
- {
- while(ready == False);
- onoff = True;
- Timer_Uninstall(7);
- Timer_Install(7, &Main, 50);
- Timer_Start(7);
- if(nextdir == Down)
- {
- nextdir = Fast;
- }
- }
- else
- {
- if(nextdir != Fast && onoff == True || levelchanged == True)
- {
- while(ready == False);
- onoff = False;
- Timer_Uninstall(7);
-
- if(level < 20)
- {
- Timer_Install(7, &Main, 100 - level * 5);
- }
- else
- {
- Timer_Install(7, &Main, 0);
- }
-
- Timer_Start(7);
- levelchanged = False;
- }
- }
-}
-
-//the code above is not good, CallMain handles the keys and sets the timer of Main
-
-void ReadMenuKeys()
-{
- if(KeyDown(31)) TeacherMode();
- if(KeyDown(47)) quit = True;
-}
-
-int AddIn_main(int isAppli, unsigned short OptionNum)
-{
- char c[] = {0xE6, 0x9B, 0};
- char mode = 0;
-
- level = 0;
-
- pScreen = (char*)malloc(3072);
-
- nextblock = (kiss() % 7) + 1;
- CreateBlock();
-
- ready = True;
-
- APP_EnableRestart();//thx to SimonLothar
-
- seedkiss();//seed random numbers
-
- while(mode != 3)
- {
- quit = False;
- Timer_Install(10, &ReadMenuKeys, 200);
- Timer_Start(10);
- while(!KeyDown(31) && mode != 3)
- {
- AllClr_VRAM();
-
- locate( 6, 3 );
- Print(&"Singleplayer");
- locate( 6, 4 );
- Print(&"Multiplayer");
- locate( 2, 8);
- Print(&"Copyright by Casimo");
-
- locate( 4, 3 + mode);
- PrintC(&c);
-
- PutDisp_DD();
-
- if(KeyDown(37))
- {
- mode += (mode == 1)? -1 : 1;
- while(KeyDown(37));
- }
- else
- {
- if(KeyDown(28))
- {
- mode -= (mode == 0)? -1 : 1;
- while(KeyDown(28));
- }
- else
- {
- if(KeyDown(47))
- {
- mode = 3;
- while(KeyDown(47));
- }
- }
-
- }
- }
-
- Timer_Uninstall(10);
-
- if(mode != 3)
- {
- if(mode == 1)
- {
- Serial_ClearReceiveBuffer();
- Connect();
- }
-
- Timer_Install(6,&CallMain, 150);
- Timer_Start(6);
-
- while(exit == False){RestGray();}
-
- ResetValues();
-
- while(KeyDown(47));
- while(KeyDown(31));
- }
- }
- Timer_Uninstall(6);
- Timer_Uninstall(7);
- Disconnect();
- free(pScreen);
-}
-
-//I'm sure there are unused variables
-
-#pragma section _BR_Size
-unsigned long BR_Size;
-#pragma section
-#pragma section _TOP
-int InitializeSystem(int isAppli, unsigned short OptionNum)
-{return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
-#pragma section
+/*Matris by Casimo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. +see here: http://creativecommons.org/licenses/by-nc-sa/3.0/ +*/ +#include "stdio.h" +#include "key.h" +#include "draw.h" +#include "global.h" + +short*APP_EnableRestart() +{ + unsigned int ea; + unsigned int j; + short*pEnableRestartFlag; + ea = *(unsigned int*)0x8001007C; + ea += 0x0490*4; + if ( ea < 0x8001007C ) return 0; + if ( ea > 0x81000000 ) return 0; + ea = *(unsigned int*)( ea ); + if ( ea < 0x8001007C ) return 0; + if ( ea > 0x81000000 ) return 0; + j = *(unsigned char*)( ea + 1 ); + j *= 4; + ea = ( ea + j + 4 ) & 0xFFFFFFFC; + if ( ea < 0x8001007C ) return 0; + if ( ea > 0x81000000 ) return 0; + pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 ); + if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0; + if ( pEnableRestartFlag ) *pEnableRestartFlag = 1; + return pEnableRestartFlag; +} + +//restart addin after return 1 + +static unsigned int seed = 123456789; +unsigned int kiss() +{ + // interner Zustand + static unsigned int y = 362436000; + static unsigned int z = 521288629; + static unsigned int c = 7654321; + + unsigned long t; + + // Linearer Kongruenzgenerator + seed = 69069 * seed + 12345; + + // Xorshift + y ^= y << 13; + y ^= y >> 17; + y ^= y << 5; + + // Multiply-with-carry + t = (unsigned long)698769069 * z + c; + c = t >> 32; + z = (unsigned int) t; + + return seed + y + z; +} + +void seedkiss() +{ + seed = RTC_GetTicks(); +} + +//kiss is a random number generator + +char *Disp_GetVRAMPtr(void); +void DrawLineVRAM(int x1, int y1, int x2, int y2); +void AllClr_DD(void); +void AllClr_VRAM(void); +void AllClr_DDVRAM(void); +void locate(int x, int y); +void Print(const unsigned char *str); +int Timer_Install(int TimerID, void (*handler)(void), int delay); +int Timer_Uninstall(int TimerID); +int Timer_Start(int TimerID); +void App_RUN_MAT(); + +//some prototypes + +char swit; + +char pause = False; +//pause the game + +char quit = False; + +char levelchanged = False; +//has the level changed during two actions? + +char exit = False; + +char ready; + +char onoff = True; +//used for timers + +char canswap; +//brick already swapped? + +char slowyposdown = 0; + +char connected; +//multiplayer activated? + +unsigned char receiveline = 0; +unsigned char sendline = 0; +//what to send or receive? + +char cantrans = False; +//allowed to transfer? + +//taken from MonochromeLib by PierrotLL + +void drawbuffer(char *buffer) +{ + char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000; + int i, j; + for(i=0 ; i<64 ; i++) + { + *LCD_register_selector = 4; + *LCD_data_register = i|192; + *LCD_register_selector = 4; + *LCD_data_register = 0; + *LCD_register_selector = 7; + for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++; + } +} + +void RestGray(void) +{ + drawbuffer(pScreen); + drawbuffer(pScreen + 1024); + drawbuffer(pScreen + 2048); +} + + +void Disconnect() +{ + Serial_Close(1); + connected = False; +} + +void TeacherMode() +{ + Timer_Uninstall(6); + Timer_Uninstall(7); + Disconnect(); + + App_RUN_MAT(); +} + +int round(float num) +{ + return (int) (num + 0.5); +} + +void clrbuffer(char *buffer) +{ + memset(buffer, 0, 3072); +} + + +void CreateBlock() +{ + block = nextblock; + canswap = True; + nextblock = (kiss() % 7) + 1; + xpos = 7; + ypos = 3; + dir = 0; + left = True; + right = True; + cantrans = True; +} + +void ResetValues() +{ + int x,y; + + char text[30]; + + memset(&changemap, 0, 210); + memset(&globalmap, 0, 210); + + ypos = 3; + xpos = 0; + block = 0; + onoff = True; + levelchanged = False; + right = True; + left = True; + hold = 0; + exit = False; + nextdir = Down; + nextblock = (kiss() % 7) + 1; + CreateBlock(); + clrbuffer(pScreen); + Timer_Uninstall(6); + Timer_Uninstall(7); + ready = True; + connected = False; + + AllClr_DDVRAM(); + + PopUpWin(2); + sprintf(&text, "Points: %d", points); + locate(3, 3); + Print(&text); + sprintf(&text, "Level: %d", level); + locate(3, 4); + Print(&text); + PutDisp_DD(); + + points = 0; + level = 0; + + while(!KeyDown(31)); +} + +void Transfer() +{ + int xcount, ycount; + char space = kiss() % 10; //where is the hole? + + if(connected == True) + { + if(receiveline > sendline) + { + //if there are lines arriving, but there can be send lines back, erase the lines, for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received + receiveline -= sendline; + sendline = 0; + } + else + { + sendline -= receiveline; + receiveline = 0; + } + if(sendline > 0) + { + while(Serial_BufferedTransmitOneByte(sendline) != 0); + //send the number of lines + sendline = 0; + } + if(receiveline > 0) + { + for(ycount = 0; ycount < 20 - receiveline; ycount++) + { + for(xcount = 0; xcount < 10; xcount++) + { + globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount]; + //move all lines upwards + } + } + + for(ycount = 19; ycount > 19 - receiveline; ycount --) + { + for(xcount = 0; xcount < 10; xcount ++) + { + globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) + 1; + //add lines at the bottom + } + } + receiveline = 0; + } + } +} + +void receive(void) +{ + unsigned char receiveadd = 0; + + if(Serial_ReadOneByte(&receiveadd) != 0) + { + receiveadd = 0; + } + + receiveline += (receiveadd > 20)?0:receiveadd; +} + +void Connect() +{ + unsigned char connstart = 111; + unsigned char answer; + char open_mode[6]; + + PopUpWin(1); + locate( 5 , 4); + Print("Connecting..."); + PutDisp_DD(); + + open_mode[ 0 ] = 0; // always 0 + open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=115200 baud + open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even + open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit + open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two + open_mode[ 5 ] = 0; // always 0 + + Serial_Open( &open_mode ); + + do + { + Serial_BufferedTransmitOneByte(connstart); + Serial_ReadOneByte(&answer); + }while(answer != connstart && !KeyDown(47)); + + if(!KeyDown(47))connected = True; + + if(connected != True) + { + Disconnect(); + } +} + +void SwapPieces() +{ + char save; + if(canswap == True) + { + save = block; + if(hold == 0) + { + block = nextblock; + nextblock = (kiss() % 7) + 1; + } + else + { + block = hold; + } + hold = save; + xpos = 7; + ypos = 3; + dir = 0; + } + canswap = False; +} + +void Rotate() +{ + if(++dir == 4) + { + dir = 0; + } + + if(DrawSprite() == False) + { + dir = (dir == 0)? 3 : dir - 1; + } +} + +void MoveBlock() +{ + switch (nextdir) + { + case Left : if(left == True) {xpos ++;} nextdir = Down;break; + case Right: if(right == True){xpos --;}nextdir = Down;break; + case Rot : Rotate();nextdir = Down;break; + case Swap: SwapPieces();nextdir = Down;break; + } + + if(nextdir == Fast && (int)slowyposdown == slowyposdown) + { + points += 1; + } +} + +void CheckPoints() +{ + char typecount = 0; + char oldlevel; + int xcount, ycount; + int ycount2, ycount3; + char fulllinecount = 0; + + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[0][xcount] != 0) + { + exit = True; + //game over + } + } + + for(ycount = 0; ycount < 20; ycount ++) + { + fulllinecount = 0; + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount][xcount] != 0) + { + fulllinecount ++; + } + else + { + break; + } + } + + if(fulllinecount == 10) + { + typecount ++; + + //1: single, 2: double, 3: triple line, 4: tetris (maximum) + + for(ycount2 = ycount; ycount2 > 0; ycount2 --) + { + for(xcount = 0; xcount < 10; xcount ++) + { + globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount]; + //move averything + } + } + + line(pScreen, 0 , 0 , 81 , 0, 1); + line(pScreen, 0 , 0 , 0 , 41, 1); + line(pScreen, 81 , 0 , 81 , 41, 1); + line(pScreen, 81 , 41 , 0 , 41, 1); + + for(ycount3 = 0; ycount3 < 20; ycount3 ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] != 0) + { + fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcount] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1); + } + } + } + } + } + if(typecount > 0) + { + int blink; + + points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount == 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0; + //increment points + + sendline = (typecount == 4)? 4 : typecount - 1; + //send a line, if not tetris send lines - 1 + oldlevel = level; + level += typecount; + if((int)(level / 10) != (int)(oldlevel / 10) && level < 200) + { + levelchanged = True; + //level = round cleared lines / 10 + } + } + Transfer(); +} + +void ReadKey() +{ + nextdir =Down; + + if(KeyDown(38)) nextdir = Rot; + if(KeyDown(37)) nextdir = Left ; + if(KeyDown(28)) nextdir = Right; + if(KeyDown(27)) nextdir = Fast; + if(KeyDown(47)) exit = True; + if(KeyDown(26)) nextdir = Swap; + if(KeyDown(31)) TeacherMode(); + if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));} +} + +void Main(void) +{ + cantrans = False; + ready = False; + if(pause == False) + { + receive(); + ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0; + if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdown % 10 == 0) + { + MoveBlock(); + DrawBlock(); + if(cantrans == True) + { + CheckPoints(); + DrawBlock(); + } + } + slowyposdown++; + } + ready = True; + drawNumber(pScreen, connected, 0, 62); + drawNumber(pScreen + 1024, connected, 0, 62); + drawNumber(pScreen + 2048, connected, 0, 62); +} + +void CallMain(void) +{ + ReadKey(); + if(nextdir == Fast && onoff == False) + { + while(ready == False); + onoff = True; + Timer_Uninstall(7); + Timer_Install(7, &Main, 50); + Timer_Start(7); + if(nextdir == Down) + { + nextdir = Fast; + } + } + else + { + if(nextdir != Fast && onoff == True || levelchanged == True) + { + while(ready == False); + onoff = False; + Timer_Uninstall(7); + + if(level < 20) + { + Timer_Install(7, &Main, 100 - level * 5); + } + else + { + Timer_Install(7, &Main, 0); + } + + Timer_Start(7); + levelchanged = False; + } + } +} + +//the code above is not good, CallMain handles the keys and sets the timer of Main + +void ReadMenuKeys() +{ + if(KeyDown(31)) TeacherMode(); + if(KeyDown(47)) quit = True; +} + +int AddIn_main(int isAppli, unsigned short OptionNum) +{ + char c[] = {0xE6, 0x9B, 0}; + char mode = 0; + + level = 0; + + pScreen = (char*)malloc(3072); + + nextblock = (kiss() % 7) + 1; + CreateBlock(); + + ready = True; + + APP_EnableRestart();//thx to SimonLothar + + seedkiss();//seed random numbers + + while(mode != 3) + { + quit = False; + Timer_Install(10, &ReadMenuKeys, 200); + Timer_Start(10); + while(!KeyDown(31) && mode != 3) + { + AllClr_VRAM(); + + locate( 6, 3 ); + Print(&"Singleplayer"); + locate( 6, 4 ); + Print(&"Multiplayer"); + locate( 2, 8); + Print(&"Copyright by Casimo"); + + locate( 4, 3 + mode); + PrintC(&c); + + PutDisp_DD(); + + if(KeyDown(37)) + { + mode += (mode == 1)? -1 : 1; + while(KeyDown(37)); + } + else + { + if(KeyDown(28)) + { + mode -= (mode == 0)? -1 : 1; + while(KeyDown(28)); + } + else + { + if(KeyDown(47)) + { + mode = 3; + while(KeyDown(47)); + } + } + + } + } + + Timer_Uninstall(10); + + if(mode != 3) + { + if(mode == 1) + { + Serial_ClearReceiveBuffer(); + Connect(); + } + + Timer_Install(6,&CallMain, 150); + Timer_Start(6); + + while(exit == False){RestGray();} + + ResetValues(); + + while(KeyDown(47)); + while(KeyDown(31)); + } + } + Timer_Uninstall(6); + Timer_Uninstall(7); + Disconnect(); + free(pScreen); +} + +//I'm sure there are unused variables + +#pragma section _BR_Size +unsigned long BR_Size; +#pragma section +#pragma section _TOP +int InitializeSystem(int isAppli, unsigned short OptionNum) +{return INIT_ADDIN_APPLICATION(isAppli, OptionNum);} +#pragma section diff --git a/Matris.dlr b/Matris.dlr new file mode 100644 index 0000000..c829c53 --- /dev/null +++ b/Matris.dlr @@ -0,0 +1,315 @@ +[DLSimRunSpace]
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=750
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=715
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=669
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=749
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=749
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=743
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=743
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=719
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1315
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=733
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=733
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=705
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=707
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1315
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1315
+Flags=00001012
+Sublevel=3
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=735
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=735
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=709
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1549
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1547
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1547
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1555
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1457
+Flags=00001012
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1422
+Flags=00001012
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1549
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=669
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=719
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=709
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1555
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=707
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=750
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=750
+Flags=00001012
+Sublevel=3
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=140
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=140
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=137
+Flags=00001012
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=715
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=715
+Flags=00001012
+Sublevel=3
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=715
+Flags=00001012
+Sublevel=4
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=107
+Flags=00001012
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1200
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=162
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=198
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1261
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1200
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1287
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=705
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1261
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1261
+Flags=00001012
+Sublevel=3
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1291
+Flags=00001012
+Sublevel=1
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=162
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=198
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1291
+Flags=00001012
+Sublevel=2
+
+[Breakpoint]
+File=G:\Casio SDK\Projekte\Matris\Matris.c
+Line=1287
+Flags=00001012
+Sublevel=2
diff --git a/Matris.dlw b/Matris.dlw new file mode 100644 index 0000000..a4f35f1 --- /dev/null +++ b/Matris.dlw @@ -0,0 +1,265 @@ +[DLSimWorkSpace]
+
+[_1]
+Type=5
+Order=0
+Top=10620
+Left=23130
+Height=4740
+Width=5565
+State=0
+Flags=00000020
+Setting=465:1:Matris.c
+OptionA=0
+
+[_2]
+Type=1
+Order=11
+Top=-30
+Left=22590
+Height=4845
+Width=5940
+State=0
+Flags=00000001
+OptionA=15
+OptionB=15
+
+[_3]
+Type=6
+Order=1
+Top=4710
+Left=23025
+Height=6390
+Width=5535
+State=0
+Flags=00000001
+OptionA=0
+
+[_4]
+Type=7
+Order=14
+Top=5040
+Left=17565
+Height=3165
+Width=5565
+State=0
+Flags=00000000
+OptionA=0
+
+[_5]
+Type=8
+Order=13
+Top=1335
+Left=17655
+Height=3225
+Width=5580
+State=0
+Flags=00000000
+OptionA=0
+
+[_6]
+Type=3
+Order=22
+Top=0
+Left=10785
+Height=6345
+Width=2235
+State=16
+Flags=00000000
+OptionA=0
+
+[_7]
+Type=2
+Order=15
+Top=6345
+Left=7800
+Height=3585
+Width=5220
+State=0
+Flags=00000000
+OptionA=0
+
+[_8]
+Type=17
+Order=6
+Top=135
+Left=105
+Height=11115
+Width=2235
+State=0
+Flags=00000000
+OptionA=0
+
+[_9]
+Type=15
+Order=2
+Top=7815
+Left=17730
+Height=6345
+Width=5595
+State=0
+Flags=00000000
+OptionA=0
+
+[_10]
+Type=4
+Order=12
+Top=4365
+Left=3720
+Height=10110
+Width=23985
+State=1
+Flags=00000020
+OptionA=0
+
+[_11]
+Type=14
+Order=21
+Top=3375
+Left=3375
+Height=10110
+Width=23985
+State=16
+Flags=00000020
+OptionA=0
+
+[_12]
+Type=9
+Order=18
+Top=1125
+Left=1125
+Height=10110
+Width=19860
+State=16
+Flags=00000020
+Setting=80000000:08100006:08100006:08100006
+OptionA=0
+
+[_13]
+Type=11
+Order=20
+Top=2250
+Left=2250
+Height=10110
+Width=23985
+State=16
+Flags=00000020
+OptionA=0
+
+[_14]
+Type=10
+Order=19
+Top=2625
+Left=2625
+Height=10110
+Width=23985
+State=16
+Flags=00000020
+OptionA=0
+
+[_32]
+Type=16
+Order=5
+Top=120
+Left=2310
+Height=14055
+Width=15330
+State=0
+Flags=00000030
+Setting=70:24:Matris.c
+OptionA=0
+
+[_33]
+Type=16
+Order=9
+Top=165
+Left=4575
+Height=13410
+Width=8355
+State=0
+Flags=00000020
+Setting=12:18:draw.h
+OptionA=0
+
+[_34]
+Type=16
+Order=17
+Top=3000
+Left=3000
+Height=10110
+Width=23985
+State=17
+Flags=00000020
+OptionA=0
+
+[_35]
+Type=16
+Order=10
+Top=405
+Left=4560
+Height=10785
+Width=13470
+State=0
+Flags=00000020
+Setting=4:7:key.h
+OptionA=0
+
+[_36]
+Type=16
+Order=8
+Top=2715
+Left=12345
+Height=10110
+Width=14445
+State=1
+Flags=00000020
+Setting=2:18:draw.c
+OptionA=0
+
+[_37]
+Type=16
+Order=7
+Top=960
+Left=5280
+Height=10110
+Width=23985
+State=1
+Flags=00000020
+Setting=18:2:key.c
+OptionA=0
+
+[_38]
+Type=16
+Order=3
+Top=3540
+Left=4515
+Height=10110
+Width=23985
+State=1
+Flags=00000020
+Setting=32:25:global.h
+OptionA=0
+
+[_39]
+Type=16
+Order=16
+Top=1875
+Left=1875
+Height=10110
+Width=23985
+State=16
+Flags=00000020
+Setting=1:14:New file.c
+OptionA=0
+
+[_40]
+Type=16
+Order=4
+Top=615
+Left=3765
+Height=10110
+Width=16725
+State=0
+Flags=00000020
+Setting=1:20:global.c
+OptionA=0
diff --git a/Matris.g1w b/Matris.g1w new file mode 100644 index 0000000..a24d9f9 --- /dev/null +++ b/Matris.g1w @@ -0,0 +1,23 @@ +[DLSimProject]
+Name=Matris
+Version=2.0
+Model=:fx-9860G.dlm
+SourcePath=SRC
+MemoryPath=INIT
+MemCardPath=SDCard
+
+[Program1]
+Program=MATRIS.G1A
+Debug=Debug\FXADDINror.dbg
+LoadAddress=80000000:90100000
+
+[Files]
+SourceFile=:Matris.c
+SourceFile=:SYSCALLS.src
+SourceFile=:key.c
+SourceFile=:draw.c
+SourceFile=:global.c
+HeaderFile=:Sprites.h
+HeaderFile=:key.h
+HeaderFile=:draw.h
+HeaderFile=:global.h
diff --git a/Matris.rar b/Matris.rar Binary files differnew file mode 100644 index 0000000..7876f55 --- /dev/null +++ b/Matris.rar diff --git a/MatrisIcon.bmp b/MatrisIcon.bmp Binary files differnew file mode 100644 index 0000000..ebd5bcc --- /dev/null +++ b/MatrisIcon.bmp diff --git a/MatrisSource.c b/MatrisSource.c new file mode 100644 index 0000000..96e9116 --- /dev/null +++ b/MatrisSource.c @@ -0,0 +1,1154 @@ +#include "fxlib.h" +#include <Sprites.h> +#include <Key.h> + +#define Dir_0 0 +#define Dir_90 1 +#define Dir_180 2 +#define Dir_270 3 + +#define Down 0 +#define Left -1 +#define Right 1 +#define Fast 30 +#define Rot 20 +#define Swap 10 + +#define Startconnection 111 +#define Received 123 + +#define False 0 +#define True 1 + +int KBD_PRGM_GetKey( void*p ); +int PRGM_GetKey() +{ + unsigned char buffer[12]; + KBD_PRGM_GetKey( buffer ); + return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 ); +} + +int Serial_BufferedTransmitOneByte( unsigned char ); +int Serial_Open( void*sm ); +int Serial_Close( int mode ); +int Serial_ReadOneByte( unsigned char* ); +char *Disp_GetVRAMPtr(void); + +void PutDisp_DD(void); +void DrawLineVRAM(int x1, int y1, int x2, int y2); +void AllClr_DD(void); +void AllClr_VRAM(void); +void AllClr_DDVRAM(void); +void Sleep(int millisecond); +int GetKey(unsigned int *keycode); +void locate(int x, int y); +void Print(const unsigned char *str); +int Timer_Install(int TimerID, void (*handler)(void), int delay); +int Timer_Uninstall(int TimerID); +int Timer_Start(int TimerID); + +char* pScreen; + +int level; + +int levelchanged = False; + +int block; +int xpos = 5, ypos = 0; +int dir; +int exit = False; +int nextdir = Down; + +int points = 0; + +int nextblock = 1; + +int ready; + +int onoff = True; + +int canswap; + +float slowyposdown; + +int changemap[21][10] = {0}; +int globalmap [20][10] = {0}; + +int right = True; +int left = True; + +int hold = 0; + +int connected; + +unsigned char recieveline = 0; +unsigned char sendline = 0; + +unsigned char recieveadd = 0; + +int cantrans = False; + +void drawbuffer(char *buffer) +{ +/* DISPGRAPH mydisp; + GRAPHDATA mygraph; + mygraph.width = 128; + mygraph.height = 64; + mygraph.pBitmap = buffer; + mydisp.x = 0; + mydisp.y = 0; + mydisp.GraphData = mygraph; + mydisp.WriteModify = IMB_WRITEMODIFY_NORMAL; + mydisp.WriteKind = IMB_WRITEKIND_OVER; + Bdisp_WriteGraph_VRAM(&mydisp);*/ + + int counter; + char * vram = Disp_GetVRAMPtr(); + + for(counter = 0; counter < 1024; counter ++) + { + *(vram + counter) = *(buffer + counter); + } +} + +void RestGray(void) +{ + drawbuffer(pScreen); + PutDisp_DD(); + + drawbuffer(pScreen + 1024); + PutDisp_DD(); + + drawbuffer(pScreen + 2048); + PutDisp_DD(); +} + +int Abs(int num) +{ + return(num < 0)? num * -1 : num; +} + +int round(float num) +{ + if((int) (num + 0.5) != (int) num) + { + return (int) (num + 0.5); + } + else + { + return (int) num; + } +} + +void clrbuffer(char *buffer) +{ + int xcount; + + for(xcount = 0; xcount < 3072; xcount ++) + { + *(buffer + xcount) = 0; + } +} + +void pixel(char *buffer, int x, int y, int type) +{ + switch (type) + { + case 0: + (*(buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + (*(1024 + buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + (*(2048 + buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + break; + case 1: + (*(2048 + buffer + y * 16 + (int) (x / 8))) |= (128 >> (x % 8)); + (*(1024 + buffer + y * 16 + (int) (x / 8))) |= (128 >> (x % 8)); + (*(buffer + y * 16 + (int) (x / 8))) |= (128 >> (x % 8)); + break; + } +} + +void pixelgray(char *buffer, int x, int y, int type) +{ + switch (type) + { + case 0: + (*(buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + (*(1024 + buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + (*(2048 + buffer + y * 16 + (int) (x / 8))) &= ( ~ (128 >> (x % 8))); + break; + case 3: + (*(2048 + buffer + y * 16 + (int) (x / 8))) |= (128 >> (x % 8)); + case 2: + (*(1024 + buffer + y * 16 + (int) (x / 8))) |= ( 128 >> (x % 8)); + case 1: + (*(buffer + y * 16 + (int) (x / 8))) |= (128 >> ((x % 8))); + break; + } +} + +void line(char *buffer, int x1, int y1, int x2, int y2, int type) +{ + int dx = x2 - x1 , dy = y2 - y1 , steps ,k; + + float xincr,yincr, x=x1 , y=y1; + + if(Abs(dx)>Abs(dy)) steps=Abs(dx); + else steps=Abs(dy); + + xincr=dx/(float)steps; + yincr=dy/(float)steps; + + pixel(buffer, round(x), round(y), type); + + for(k=0;k<steps;k++) { + x+=xincr; + y+=yincr; + pixel(buffer, round(x), round(y), type); + } +} + +void drawChar(char *buffer, char charact, int posx, int posy) +{ + int xcount, ycount; + + for(xcount = 0; xcount < 5; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + pixel(buffer, posx + xcount, posy - ycount, character[charact - 65][xcount][ycount]); + } + } +} + +void drawString(char *buffer, char * string, int strlenght, int posx, int posy) +{ + int ycount, charcount; + + for(charcount = strlenght - 1 , ycount = posy; charcount >= 0; charcount --, ycount += 4) + { + drawChar(buffer, *(string + charcount), posx, ycount); + } +} + +void drawNumber(char *buffer, int num, int posx, int posy) +{ + int xcount, ycount; + + for(xcount = 0; xcount < 5; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + pixel(buffer, posx + xcount, posy - ycount, numbers[num][xcount][ycount]); + } + } +} + +void fillbox(char *buffer, int posx, int posy, int type) +{ + int ycount, xcount; + + for(ycount = 0; ycount <= 4; ycount ++) + { + for(xcount = 0; xcount <= 4; xcount ++) + { + pixelgray(buffer, posx * 5 + xcount + 1, posy * 5 + ycount + 1, spritesheed[type][ycount][xcount]); + } + } +} + +void Transfer() +{ + int xcount, ycount; + char answer = 0; + int space = Abs(rand() * RTC_GetTicks()) % 10; + + if(connected == True) + { + + if(recieveline > sendline) + { + recieveline -= sendline; + sendline = 0; + } + else + { + sendline -= recieveline; + recieveline = 0; + } + while(answer != Received) + { + Serial_ReadOneByte(&answer); + Serial_BufferedTransmitOneByte(sendline); + Sleep((rand() * RTC_GetTicks()) % 2); + } + + if(recieveline > 0) + { + for(ycount = 0; ycount < 20 - recieveline; ycount++) + { + for(xcount = 0; xcount < 10; xcount++) + { + globalmap[ycount][xcount] = globalmap[ycount + recieveline][xcount]; + } + } + + for(ycount = 19; ycount > 19 - recieveline; ycount --) + { + for(xcount = 0; xcount < 10; xcount ++) + { + globalmap[ycount][xcount] = (xcount == space) ? 0 : 1; + } + } + } + } +} + +void Recieve(void) +{ + int answer = 0; + if(Serial_ReadOneByte(&recieveadd) != 0) + { + recieveadd = 0; + } + recieveline += recieveadd; + while(Serial_ReadOneByte(&recieveadd) == 0) + { + Serial_BufferedTransmitOneByte(Received); + Sleep((rand() * RTC_GetTicks()) % 2); + } + Sleep((rand() * RTC_GetTicks()) % 2); + if(Serial_ReadOneByte(&recieveadd) != 0) + { + recieveadd = 0; + } + recieveline += recieveadd; + while(Serial_ReadOneByte(&recieveadd) == 0) + { + Serial_BufferedTransmitOneByte(Received); + Sleep((rand() * RTC_GetTicks()) % 2); + } +} + +void Disconnect() +{ + Serial_Close(1); + connected = False; + Timer_Uninstall(8); +} + +void Connect() +{ + unsigned char connstart = Startconnection; + unsigned char answer; + int nobock = False; + char open_mode[6]; + unsigned char key; + + PopUpWin(1); + locate( 5 , 4); + Print((unsigned char*)"Connecting..."); + PutDisp_DD(); + + open_mode[ 0 ] = 0; // always 0 + open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=115200 baud + open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even + open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit + open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two + open_mode[ 5 ] = 0; // always 0 + + Serial_Open( &open_mode ); + + while(answer != Startconnection && nobock == False) + { + Serial_ReadOneByte(&answer); + Serial_BufferedTransmitOneByte(connstart); + Sleep((rand() * RTC_GetTicks()) % 2); + if(PRGM_GetKey() == 47) + { + nobock = True; + } + } + + answer = 0; + + while(answer == Startconnection && nobock == False) + { + Serial_ReadOneByte(&answer); + Sleep((rand() * RTC_GetTicks()) % 2); + if(PRGM_GetKey() == 47) + { + nobock = True; + } + } + connected = (nobock == True)? False : True; + + AllClr_VRAM(); + PopUpWin(1); + locate( 7 , 4); + if(connected == True) + { + Print((unsigned char*)"Ready!"); + Timer_Install(8, &Recieve, 3); + Timer_Start(8); + } + else + { + Print((unsigned char*)"Failed!"); + Disconnect(); + } + Sleep(500); + GetKey(&key); +} + +void CreateBlock() +{ + block = nextblock; + canswap = True; + nextblock = 0; + while(nextblock < 1 || nextblock > 7) + { + nextblock = Abs((rand() * RTC_GetTicks()) % 7 + 1); + } + xpos = 7; + ypos = 2; + dir = 1; + left = True; + right = True; + cantrans = True; +} + +void SwapPieces() +{ + int save; + if(canswap == True) + { + save = hold; + hold = block; + block = save; + xpos = 7; + ypos = 0; + dir = 0; + if(save == 0) + { + CreateBlock(); + } + } + canswap = False; +} + +int DrawSprite() +{ + int fit = True; + + int xcount, ycount; + right = True; + left = True; + + for(xcount = 0; xcount < 10; xcount ++) + { + for(ycount = 0; ycount < 21; ycount ++) + { + changemap[ycount][xcount] = 0; + } + } + + switch(block) + { + case 1: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockO[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 1; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 2: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 2; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 3: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockT[dir][ycount][xcount] == 1&& ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 3; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 4: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockJ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 4; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 5: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockL[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 5; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 6: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockZ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 6; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 7: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockS[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 7; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + } + return fit; +} + +void DrawBlock() +{ + char strnextblock[4] = "NEXT"; + char strhold[4] = "HOLD"; + char strpoints[3] = "PTS"; + char strlv[2] = "LV"; + char levelz[2]; + unsigned char pointz[6] = {0}; + + int xcount, ycount; + + clrbuffer(pScreen); + + levelz[0] = (int)(level / 10) % 10; + levelz[1] = (int)(level / 10) % 100 / 10; + + drawNumber(pScreen, levelz[0], 120, 47); + drawNumber(pScreen, levelz[1], 120, 51); + + drawString(pScreen, strlv, 2, 120, 59); + + pointz[5] = points / 100000; + pointz[4] = points % 100000 / 10000; + pointz[3] = points % 10000 / 1000; + pointz[2] = points % 1000 / 100; + pointz[1] = points % 100 / 10; + pointz[0] = points % 10; + + drawNumber(pScreen, pointz[0], 112, 43); + drawNumber(pScreen, pointz[1], 112, 47); + drawNumber(pScreen, pointz[2], 112, 51); + drawNumber(pScreen, pointz[3], 112, 55); + drawNumber(pScreen, pointz[4], 112, 59); + drawNumber(pScreen, pointz[5], 112, 63); + + drawString(pScreen, strpoints, 3, 105, 50); + + if(DrawSprite() == False) + { + for(ycount = 0; ycount < 20; ycount ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(changemap[ycount + 1][xcount] != 0) + { + globalmap[ycount][xcount] = changemap[ycount + 1][xcount]; + } + } + } + CreateBlock(); + if(nextdir == Fast) + { + nextdir = Down; + } + } + + line(pScreen, 0 , 0 , 101 , 0, 1); + line(pScreen, 0 , 0 , 0 , 51, 1); + line(pScreen, 101 , 0 , 101 , 51, 1); + line(pScreen, 101 , 51 , 0 , 51, 1); + + for(ycount = 0; ycount < 20; ycount ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount][xcount] != 0 || changemap[ycount][xcount] != 0) + { + fillbox(pScreen, ycount, xcount, (globalmap[ycount][xcount] != 0)? globalmap[ycount][xcount] - 1 : changemap[ycount][xcount] - 1); + } + } + } + + drawString(pScreen, &strnextblock, 4, 105, 5); + + switch(nextblock) + { + case 1 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockO[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 2 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 3 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockT[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 4 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockJ[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 5 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockL[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 1 + xcount, 4); + } + } + } + break; + + case 6 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockZ[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 7 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockS[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + } + + drawString(pScreen, &strhold, 4, 105, 27); + + switch(hold) + { + case 1 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockO[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 0); + } + } + } + break; + + case 2 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 1); + } + } + } + break; + + case 3 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockT[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 2); + } + } + } + break; + + case 4 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockJ[1][ycount][xcount] == 1) + { + fillbox(&pScreen, 22 + ycount , 5 + xcount, 3); + } + } + } + break; + + case 5 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockL[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 4); + } + } + } + break; + + case 6 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockZ[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 5); + } + } + } + break; + + case 7 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockS[1][ycount][xcount] == 1) + { + fillbox(pScreen, 22 + ycount , 5 + xcount, 6); + } + } + } + break; + } +} + +void Rotate() +{ + dir += 1; + if(dir == 4) + { + dir = 0; + } + if(DrawSprite() == False) + { + dir = (dir == 0)? 3 : dir - 1; + } +} + +void MoveBlock() +{ + switch (nextdir) + { + case Left : if(left == True) {xpos ++;} nextdir = Down;break; + case Right: if(right == True){xpos --;}nextdir = Down;break; + case Rot : Rotate();nextdir = Down;break; + case Swap: SwapPieces();nextdir = Down;break; + } + slowyposdown += 0.25; + ypos += ((int)slowyposdown == slowyposdown || nextdir == Fast)? 1 : 0; + + if(nextdir == Fast && (int)slowyposdown == slowyposdown) + { + points += 1; + } +} + +void CheckPoints() +{ + int typecount = 0; + int oldlevel; + int xcount, ycount; + int ycount2, ycount3; + int fulllinecount = 0; + + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[0][xcount] != 0) + { + exit = True; + } + } + + for(ycount = 0; ycount < 20; ycount ++) + { + fulllinecount = 0; + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount][xcount] != 0) + { + fulllinecount ++; + } + else + { + break; + } + } + + if(fulllinecount == 10) + { + typecount ++; + + for(ycount2 = ycount; ycount2 > 0; ycount2 --) + { + for(xcount = 0; xcount < 10; xcount ++) + { + globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount]; + } + } + line(pScreen, 0 , 0 , 81 , 0, 1); + line(pScreen, 0 , 0 , 0 , 41, 1); + line(pScreen, 81 , 0 , 81 , 41, 1); + line(pScreen, 81 , 41 , 0 , 41, 1); + + for(ycount3 = 0; ycount3 < 20; ycount3 ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] != 0) + { + fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcount] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1); + } + } + } + } + } + if(typecount > 0) + { + points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount == 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0; + sendline = (typecount == 4)? 4 : typecount - 1; + oldlevel = level; + level += typecount; + if((int)(level / 10) != (int)(oldlevel / 10)) + { + levelchanged = True; + } + } + Transfer(); + +} + +void ReadKey() +{ + int key; + + key = PRGM_GetKey(); + + nextdir =Down; + + switch(key) + { + case /*KEY_CTRL_LEFT*/ 38 : nextdir = Rot; break; + case /*KEY_CTRL_DOWN*/37: nextdir = Left ;break; + case /*KEY_CTRL_UP*/ 28: nextdir = Right;break; + case /*KEY_CTRL_RIGHT*/27: nextdir = Fast; break; + case /*KEY_CTRL_EXIT*/ 47: exit = True; break; + case /*KEY_CHAR_TAN*/ 26: nextdir = Swap;break; + } +} + +void Main(void) +{ + cantrans = False; + ready = False; + MoveBlock(); + DrawBlock(); + if(cantrans == True) + { + CheckPoints(); + DrawBlock(); + } + ready = True; +} + +void CallMain(void) +{ + ReadKey(); + if(nextdir == Fast && onoff == False) + { + while(ready == False){} + onoff = True; + Timer_Uninstall(7); + Timer_Install(7, &Main, 50); + Timer_Start(7); + if(nextdir == Down) + { + nextdir = Fast; + } + } + else + { + if(nextdir != Fast && onoff == True || levelchanged == True) + { + while(ready == False){} + onoff = False; + Timer_Uninstall(7); + if(level < 100) + { + Timer_Install(7, &Main, 200 - (int)(level / 10) * 20); + } + else + { + Timer_Install(7, &Main, 0); + } + Timer_Start(7); + levelchanged = False; + } + } +} + + +int AddIn_main(int isAppli, unsigned short OptionNum) +{ + char *screen[3072]; + + level = 0; + + pScreen = &screen; + + nextblock = (rand() * RTC_GetTicks()) % 7 + 1; + CreateBlock(); + + ready = True; + + Connect(); + + AllClr_DDVRAM(); + + Timer_Install(6,&CallMain, 50); + Timer_Start(6); + + while(exit == False) + { + RestGray(); + } + Timer_Uninstall(6); + Timer_Uninstall(7); + Timer_Uninstall(8); + Disconnect(); +} + +#pragma section _BR_Size +unsigned long BR_Size; +#pragma section +#pragma section _TOP +int InitializeSystem(int isAppli, unsigned short OptionNum) +{return INIT_ADDIN_APPLICATION(isAppli, OptionNum);} +#pragma section diff --git a/SDCard/SCORE.mat b/SDCard/SCORE.mat Binary files differnew file mode 100644 index 0000000..fbe6ec9 --- /dev/null +++ b/SDCard/SCORE.mat @@ -1,443 +1,443 @@ -#ifndef __SPRITES_H__
-#define __SPRITES_H__
-
-int numbers[10][5][3] = {
-{
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 }},
-
-{{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 0 , 0 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 }
-},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 0 , 1 },
-{ 0 , 0 , 1 },
-{ 0 , 0 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 }},
-};
-
-int character[26][5][3] = {
-{{ 0 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 }},
-
-{{ 1 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 0 }},
-
-{{ 0 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 },
-{ 0 , 1 , 1 }},
-
-{{ 1 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 0 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 }},
-
-{{ 0 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 }},
-
-{{ 1 , 1 , 1 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 1 , 1 , 1 }},
-
-{{ 0 , 0 , 1 },
-{ 0 , 0 , 1 },
-{ 0 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 1 , 0 },
-{ 1 , 1 , 0 },
-{ 1 , 1 , 0 },
-{ 1 , 0 , 1 }},
-
-{{ 1 , 0 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 0 }},
-
-{{ 0 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 0 , 0 }},
-
-{{ 0 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 1 }},
-
-{{ 1 , 1 , 0 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 0 },
-{ 1 , 1 , 0 },
-{ 1 , 0 , 1 }},
-
-{{ 0 , 1 , 1 },
-{ 1 , 0 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 0 , 1 },
-{ 1 , 1 , 0 }},
-
-{{ 1 , 1 , 1 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 1 , 1 , 1 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 0 , 1 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 1 , 0 , 1 }},
-
-{{ 1 , 0 , 1 },
-{ 1 , 0 , 1 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 }},
-
-{{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-{ 0 , 1 , 0 },
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 }},
-};
-
-int blockO[4][3][4] = {
-{
-{ 0 , 1 , 1 , 0 },
-{ 0 , 1 , 1 , 0 },
-{ 0 , 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 1 , 0 },
-{ 0 , 1 , 1 , 0 },
-{ 0 , 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 1 , 0 },
-{ 0 , 1 , 1 , 0 },
-{ 0 , 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 1 , 0 },
-{ 0 , 1 , 1 , 0 },
-{ 0 , 0 , 0 , 0 },
-}
-};
-
-int blockJ[4][3][3] = {
-{
-{ 1 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 1 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-},
-{
-{ 0 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 1 },
-},
-{
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 1 , 1 , 0 },
-}
-};
-
-int blockT[4][3][3] = {
-{
-{ 0 , 1 , 0 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 0 },
-{ 0 , 1 , 1 },
-{ 0 , 1 , 0 },
-},
-{
-{ 0 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 0 , 1 , 0 },
-},
-{
-{ 0 , 1 , 0 },
-{ 1 , 1 , 0 },
-{ 0 , 1 , 0 },
-}
-};
-
-int blockL[4][3][3] = {
-{
-{ 0 , 0 , 1 },
-{ 1 , 1 , 1 },
-{ 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 1 },
-},
-{
-{ 0 , 0 , 0 },
-{ 1 , 1 , 1 },
-{ 1 , 0 , 0 },
-},
-{
-{ 1 , 1 , 0 },
-{ 0 , 1 , 0 },
-{ 0 , 1 , 0 },
-}
-};
-
-int blockI[4][4][4] = {
-{
-{ 0 , 0 , 0 , 0 },
-{ 1 , 1 , 1 , 1 },
-{ 0 , 0 , 0 , 0 },
-{ 0 , 0 , 0 , 0 }
-},
-{
-{ 0 , 0 , 1 , 0 },
-{ 0 , 0 , 1 , 0 },
-{ 0 , 0 , 1 , 0 },
-{ 0 , 0 , 1 , 0 }
-},
-{
-{ 0 , 0 , 0 , 0 },
-{ 0 , 0 , 0 , 0 },
-{ 1 , 1 , 1 , 1 },
-{ 0 , 0 , 0 , 0 }
-},
-{
-{ 0 , 1 , 0 , 0 },
-{ 0 , 1 , 0 , 0 },
-{ 0 , 1 , 0 , 0 },
-{ 0 , 1 , 0 , 0 }
-}
-};
-
-int blockZ[4][3][3] = {
-{
-{ 1 , 1 , 0 },
-{ 0 , 1 , 1 },
-{ 0 , 0 , 0 }
-},
-{
-{ 0 , 0 , 1 },
-{ 0 , 1 , 1 },
-{ 0 , 1 , 0 },
-},
-{
-{ 0 , 0 , 0 },
-{ 1 , 1 , 0 },
-{ 0 , 1 , 1 },
-},
-{
-{ 0 , 0 , 1 },
-{ 0 , 1 , 1 },
-{ 0 , 1 , 0 },
-}
-};
-
-int blockS[4][3][3] = {
-{
-{ 0 , 1 , 1 },
-{ 1 , 1 , 0 },
-{ 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 0 },
-{ 0 , 1 , 1 },
-{ 0 , 0 , 1 },
-},
-{
-{ 0 , 1 , 1 },
-{ 1 , 1 , 0 },
-{ 0 , 0 , 0 },
-},
-{
-{ 0 , 1 , 0 },
-{ 0 , 1 , 1 },
-{ 0 , 0 , 1 },
-}
-};
-
-int spritesheed[7][5][5] = {
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 0 , 0 , 0 , 3 },
-{ 3 , 0 , 3 , 0 , 3 },
-{ 3 , 0 , 0 , 0 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 1 , 1 , 1 , 3 },
-{ 3 , 1 , 0 , 1 , 3 },
-{ 3 , 1 , 1 , 1 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 1 , 1 , 1 , 3 },
-{ 3 , 1 , 0 , 2 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 1 , 2 , 2 , 3 },
-{ 3 , 2 , 2 , 1 , 3 },
-{ 3 , 2 , 1 , 2 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 1 , 1 , 1 , 3 },
-{ 3 , 1 , 3 , 1 , 3 },
-{ 3 , 1 , 1 , 1 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-},
-{
-{ 3 , 3 , 3 , 3 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 2 , 0 , 2 , 3 },
-{ 3 , 2 , 2 , 2 , 3 },
-{ 3 , 3 , 3 , 3 , 3 },
-}
-};
-
+#ifndef __SPRITES_H__ +#define __SPRITES_H__ + +int numbers[10][5][3] = { +{ +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }}, + +{{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 0 , 0 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 } +}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 0 , 1 }, +{ 0 , 0 , 1 }, +{ 0 , 0 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 }}, +}; + +int character[26][5][3] = { +{{ 0 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }}, + +{{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }}, + +{{ 0 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }, +{ 0 , 1 , 1 }}, + +{{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }}, + +{{ 0 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }}, + +{{ 1 , 1 , 1 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 1 , 1 , 1 }}, + +{{ 0 , 0 , 1 }, +{ 0 , 0 , 1 }, +{ 0 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }, +{ 1 , 1 , 0 }, +{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }}, + +{{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 0 }}, + +{{ 0 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 0 , 0 }}, + +{{ 0 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 1 }}, + +{{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 0 }, +{ 1 , 1 , 0 }, +{ 1 , 0 , 1 }}, + +{{ 0 , 1 , 1 }, +{ 1 , 0 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 0 , 1 }, +{ 1 , 1 , 0 }}, + +{{ 1 , 1 , 1 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 1 , 1 , 1 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 0 , 1 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 1 , 0 , 1 }}, + +{{ 1 , 0 , 1 }, +{ 1 , 0 , 1 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }}, + +{{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +{ 0 , 1 , 0 }, +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }}, +}; + +int blockO[4][3][4] = { +{ +{ 0 , 1 , 1 , 0 }, +{ 0 , 1 , 1 , 0 }, +{ 0 , 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 1 , 0 }, +{ 0 , 1 , 1 , 0 }, +{ 0 , 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 1 , 0 }, +{ 0 , 1 , 1 , 0 }, +{ 0 , 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 1 , 0 }, +{ 0 , 1 , 1 , 0 }, +{ 0 , 0 , 0 , 0 }, +} +}; + +int blockJ[4][3][3] = { +{ +{ 1 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 1 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +}, +{ +{ 0 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 1 }, +}, +{ +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 1 , 1 , 0 }, +} +}; + +int blockT[4][3][3] = { +{ +{ 0 , 1 , 0 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 0 }, +{ 0 , 1 , 1 }, +{ 0 , 1 , 0 }, +}, +{ +{ 0 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 0 , 1 , 0 }, +}, +{ +{ 0 , 1 , 0 }, +{ 1 , 1 , 0 }, +{ 0 , 1 , 0 }, +} +}; + +int blockL[4][3][3] = { +{ +{ 0 , 0 , 1 }, +{ 1 , 1 , 1 }, +{ 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 1 }, +}, +{ +{ 0 , 0 , 0 }, +{ 1 , 1 , 1 }, +{ 1 , 0 , 0 }, +}, +{ +{ 1 , 1 , 0 }, +{ 0 , 1 , 0 }, +{ 0 , 1 , 0 }, +} +}; + +int blockI[4][4][4] = { +{ +{ 0 , 0 , 0 , 0 }, +{ 1 , 1 , 1 , 1 }, +{ 0 , 0 , 0 , 0 }, +{ 0 , 0 , 0 , 0 } +}, +{ +{ 0 , 0 , 1 , 0 }, +{ 0 , 0 , 1 , 0 }, +{ 0 , 0 , 1 , 0 }, +{ 0 , 0 , 1 , 0 } +}, +{ +{ 0 , 0 , 0 , 0 }, +{ 0 , 0 , 0 , 0 }, +{ 1 , 1 , 1 , 1 }, +{ 0 , 0 , 0 , 0 } +}, +{ +{ 0 , 1 , 0 , 0 }, +{ 0 , 1 , 0 , 0 }, +{ 0 , 1 , 0 , 0 }, +{ 0 , 1 , 0 , 0 } +} +}; + +int blockZ[4][3][3] = { +{ +{ 1 , 1 , 0 }, +{ 0 , 1 , 1 }, +{ 0 , 0 , 0 } +}, +{ +{ 0 , 0 , 1 }, +{ 0 , 1 , 1 }, +{ 0 , 1 , 0 }, +}, +{ +{ 0 , 0 , 0 }, +{ 1 , 1 , 0 }, +{ 0 , 1 , 1 }, +}, +{ +{ 0 , 0 , 1 }, +{ 0 , 1 , 1 }, +{ 0 , 1 , 0 }, +} +}; + +int blockS[4][3][3] = { +{ +{ 0 , 1 , 1 }, +{ 1 , 1 , 0 }, +{ 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 0 }, +{ 0 , 1 , 1 }, +{ 0 , 0 , 1 }, +}, +{ +{ 0 , 1 , 1 }, +{ 1 , 1 , 0 }, +{ 0 , 0 , 0 }, +}, +{ +{ 0 , 1 , 0 }, +{ 0 , 1 , 1 }, +{ 0 , 0 , 1 }, +} +}; + +int spritesheed[7][5][5] = { +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 0 , 0 , 0 , 3 }, +{ 3 , 0 , 3 , 0 , 3 }, +{ 3 , 0 , 0 , 0 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 1 , 1 , 1 , 3 }, +{ 3 , 1 , 0 , 1 , 3 }, +{ 3 , 1 , 1 , 1 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 1 , 1 , 1 , 3 }, +{ 3 , 1 , 0 , 2 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 1 , 2 , 2 , 3 }, +{ 3 , 2 , 2 , 1 , 3 }, +{ 3 , 2 , 1 , 2 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 1 , 1 , 1 , 3 }, +{ 3 , 1 , 3 , 1 , 3 }, +{ 3 , 1 , 1 , 1 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +}, +{ +{ 3 , 3 , 3 , 3 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 2 , 0 , 2 , 3 }, +{ 3 , 2 , 2 , 2 , 3 }, +{ 3 , 3 , 3 , 3 , 3 }, +} +}; + #endif
\ No newline at end of file @@ -1,655 +1,655 @@ -#include "sprites.h"
-#include "global.h"
-
-//also from ML, a bit modified
-
-void pixel(char *buffer, int x, int y, int type)
-{
- if(x&~127 || y&~63) return;
- switch (type)
- {
- case 0:
- (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- break;
- case 1:
- (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- break;
- }
-}
-
-void pixelgray(char *buffer, int x,int y, int type)
-{
- switch (type)
- {
- case 0:
- (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
- break;
- case 3:
- (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- case 2:
- (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- case 1:
- (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
- break;
- }
-}
-
-#define Abs(x) ((x < 0)? -x : x)
-#define sgn(x) (x == 0)?0:(x > 0)?1:-1
-
-void line(char *buffer, int x1, int y1, int x2, int y2, int color)
-{
- int i, x, y, dx, dy, sx, sy, cumul;
-
- y1 = y1 + 7;
- y2 = y2 + 7;
-
- x = x1;
- y = y1;
- dx = x2 - x1;
- dy = y2 - y1;
- sx = sgn(dx);
- sy = sgn(dy);
- dx = Abs(dx);
- dy = Abs(dy);
- pixel(buffer, x, y, color);
- if(dx > dy)
- {
- cumul = dx / 2;
- for(i=1 ; i<dx ; i++)
- {
- x += sx;
- cumul += dy;
- if(cumul > dx)
- {
- cumul -= dx;
- y += sy;
- }
- pixel(buffer, x, y, color);
- }
- }
- else
- {
- cumul = dy / 2;
- for(i=1 ; i<dy ; i++)
- {
- y += sy;
- cumul += dx;
- if(cumul > dy)
- {
- cumul -= dy;
- x += sx;
- }
- pixel(buffer, x, y, color);
- }
- }
-}
-//end of ML stuff
-
-void drawChar(char *buffer, char charact, int posx, int posy)
-{
- int xcount, ycount;
-
- for(xcount = 0; xcount < 5; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- pixel(buffer, posx + xcount, posy - ycount, character[charact - 65][xcount][ycount]);
- //this should be optimized: it is drawed pixel per pixel
- }
- }
-}
-
-void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy)
-{
- int ycount, charcount;
-
- for(charcount = strlenght - 1 , ycount = posy; charcount >= 0; charcount --, ycount += 4)
- {
- drawChar(buffer, *(string + charcount), posx, ycount);
- //every char seperately
- }
-}
-
-void drawNumber(char *buffer, char num, int posx, int posy)
-{
- int xcount, ycount;
-
- for(xcount = 0; xcount < 5; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- pixel(buffer, (int)posx + xcount, (int)posy - ycount, (int)numbers[num][xcount][ycount]);
- //like drawChar
- }
- }
-}
-
-void fillbox(char *buffer, int posx, int posy, int type)
-{
- int ycount, xcount;
-
- for(ycount = 0; ycount <= 4; ycount ++)
- {
- for(xcount = 0; xcount <= 4; xcount ++)
- {
- pixelgray(buffer, posx * 5 + xcount + 1, posy * 5 + ycount + 1 + 7, spritesheed[type][ycount][xcount]);
- //draw a brick box pixel per pixel
- }
- }
-}
-
-void normalfillbox(char *buffer, int posx, int posy, int type)
-{
- int ycount, xcount;
-
- for(ycount = 0; ycount <= 4; ycount ++)
- {
- for(xcount = 0; xcount <= 4; xcount ++)
- {
- pixelgray(buffer, posx * 5 + xcount - 2, posy * 5 + ycount, spritesheed[type][ycount][xcount]);
- //like fillbox, just a different position
- }
- }
-}
-
-int DrawSprite()
-{
- char fit = True;
-
- int xcount, ycount;
- right = True;
- left = True;
-
- memset(&changemap, 0, 210);
-
- //now draw a brick, the sizes are different
- //structs and a drawing function would be better, it would save code
-
- switch(block)
- {
- case 1:
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockO[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 1;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 2:
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 4; ycount ++)
- {
- if(blockI[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 2;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 3:
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockT[dir][ycount][xcount] == 1&& ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 3;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 4:
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockJ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 4;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 5:
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockL[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 5;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 6:
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockZ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 6;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- case 7:
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockS[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
- {
- if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
- {
- fit = False;
- }
- else
- {
- changemap[ypos - ycount - 2][xpos - xcount - 2] = 7;
- if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
- {
- fit = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
- {
- right = False;
- }
- if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
- {
- left = False;
- }
- }
- }
- }
- }
- break;
- }
- return fit;
-}
-
-void DrawBlock()
-{
- int xcount, ycount;
-
- clrbuffer(pScreen);
-
- drawNumber(pScreen, (int)(level / 10) % 10, 115, 39);
- drawNumber(pScreen, (int)(level / 10) % 100 / 10, 115, 43);
-
- drawString(pScreen, &"LV", 2, 115, 59);
-
- drawNumber(pScreen, points % 10, 109, 39);
- drawNumber(pScreen, points % 100 / 10, 109, 43);
- drawNumber(pScreen, points % 1000 / 100, 109, 47);
- drawNumber(pScreen, points % 10000 / 1000, 109, 51);
- drawNumber(pScreen, points % 100000 / 10000, 109, 55);
- drawNumber(pScreen, points % 1000000 / 100000, 109, 59);
- drawNumber(pScreen, points / 1000000, 109, 63);
-
- drawString(pScreen, &"PTS", 3, 103, 51);
-
- drawString(pScreen, &"LINE", 4, 121, 51);
-
- drawNumber(pScreen, level % 10, 121, 39);
- drawNumber(pScreen, level % 100 / 10, 121, 43);
- drawNumber(pScreen, level % 1000 / 100, 121, 47);
-
- if(DrawSprite() == False)
- {
- for(ycount = 0; ycount < 20; ycount ++)
- {
- for(xcount = 0; xcount < 10; xcount ++)
- {
- if(changemap[ycount + 1][xcount] != 0)
- {
- globalmap[ycount][xcount] = changemap[ycount + 1][xcount];
- }
- }
- }
- CreateBlock();
- if(nextdir == Fast)
- {
- nextdir = Down;
- }
- }
-
- line(pScreen, 0 , 0 , 101 , 0, 1);
- line(pScreen, 0 , 0 , 0 , 51, 1);
- line(pScreen, 101 , 0 , 101 , 51, 1);
- line(pScreen, 101 , 51 , 0 , 51, 1);
-
- for(ycount = 0; ycount < 20; ycount ++)
- {
- for(xcount = 0; xcount < 10; xcount ++)
- {
- if(globalmap[ycount][xcount] != 0 || changemap[ycount][xcount] != 0)
- {
- fillbox(pScreen, ycount, xcount, (globalmap[ycount][xcount] != 0)? globalmap[ycount][xcount] - 1 : changemap[ycount][xcount] - 1);
- }
- }
- }
-
- drawString(pScreen, &"NEXT", 4, 103, 2);
-
- //draw the next block
-
- switch(nextblock)
- {
- case 1 :
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockO[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 0);
- }
- }
- }
- break;
-
- case 2 :
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 4; ycount ++)
- {
- if(blockI[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 1);
- }
- }
- }
- break;
-
- case 3 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockT[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 2);
- }
- }
- }
- break;
-
- case 4 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockJ[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 3);
- }
- }
- }
- break;
-
- case 5 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockL[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 4);
- }
- }
- }
- break;
-
- case 6 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockZ[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 5);
- }
- }
- }
- break;
-
- case 7 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockS[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 0 + xcount, 6);
- }
- }
- }
- break;
- }
-
- drawString(pScreen, &"HOLD", 4, 103, 22);
-
- //draw the stored block
-
- switch(hold)
- {
- case 1 :
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockO[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 0);
- }
- }
- }
- break;
-
- case 2 :
- for(xcount = 0; xcount < 4; xcount ++)
- {
- for(ycount = 0; ycount < 4; ycount ++)
- {
- if(blockI[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 1);
- }
- }
- }
- break;
-
- case 3 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockT[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 2);
- }
- }
- }
- break;
-
- case 4 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockJ[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 3);
- }
- }
- }
- break;
-
- case 5 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockL[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 4);
- }
- }
- }
- break;
-
- case 6 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockZ[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 5);
- }
- }
- }
- break;
-
- case 7 :
- for(xcount = 0; xcount < 3; xcount ++)
- {
- for(ycount = 0; ycount < 3; ycount ++)
- {
- if(blockS[0][ycount][xcount] == 1)
- {
- normalfillbox(pScreen, 22 + ycount , 4 + xcount, 6);
- }
- }
- }
- break;
- }
-}
+#include "sprites.h" +#include "global.h" + +//also from ML, a bit modified + +void pixel(char *buffer, int x, int y, int type) +{ + if(x&~127 || y&~63) return; + switch (type) + { + case 0: + (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + break; + case 1: + (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + break; + } +} + +void pixelgray(char *buffer, int x,int y, int type) +{ + switch (type) + { + case 0: + (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7))); + break; + case 3: + (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + case 2: + (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + case 1: + (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7)); + break; + } +} + +#define Abs(x) ((x < 0)? -x : x) +#define sgn(x) (x == 0)?0:(x > 0)?1:-1 + +void line(char *buffer, int x1, int y1, int x2, int y2, int color) +{ + int i, x, y, dx, dy, sx, sy, cumul; + + y1 = y1 + 7; + y2 = y2 + 7; + + x = x1; + y = y1; + dx = x2 - x1; + dy = y2 - y1; + sx = sgn(dx); + sy = sgn(dy); + dx = Abs(dx); + dy = Abs(dy); + pixel(buffer, x, y, color); + if(dx > dy) + { + cumul = dx / 2; + for(i=1 ; i<dx ; i++) + { + x += sx; + cumul += dy; + if(cumul > dx) + { + cumul -= dx; + y += sy; + } + pixel(buffer, x, y, color); + } + } + else + { + cumul = dy / 2; + for(i=1 ; i<dy ; i++) + { + y += sy; + cumul += dx; + if(cumul > dy) + { + cumul -= dy; + x += sx; + } + pixel(buffer, x, y, color); + } + } +} +//end of ML stuff + +void drawChar(char *buffer, char charact, int posx, int posy) +{ + int xcount, ycount; + + for(xcount = 0; xcount < 5; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + pixel(buffer, posx + xcount, posy - ycount, character[charact - 65][xcount][ycount]); + //this should be optimized: it is drawed pixel per pixel + } + } +} + +void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy) +{ + int ycount, charcount; + + for(charcount = strlenght - 1 , ycount = posy; charcount >= 0; charcount --, ycount += 4) + { + drawChar(buffer, *(string + charcount), posx, ycount); + //every char seperately + } +} + +void drawNumber(char *buffer, char num, int posx, int posy) +{ + int xcount, ycount; + + for(xcount = 0; xcount < 5; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + pixel(buffer, (int)posx + xcount, (int)posy - ycount, (int)numbers[num][xcount][ycount]); + //like drawChar + } + } +} + +void fillbox(char *buffer, int posx, int posy, int type) +{ + int ycount, xcount; + + for(ycount = 0; ycount <= 4; ycount ++) + { + for(xcount = 0; xcount <= 4; xcount ++) + { + pixelgray(buffer, posx * 5 + xcount + 1, posy * 5 + ycount + 1 + 7, spritesheed[type][ycount][xcount]); + //draw a brick box pixel per pixel + } + } +} + +void normalfillbox(char *buffer, int posx, int posy, int type) +{ + int ycount, xcount; + + for(ycount = 0; ycount <= 4; ycount ++) + { + for(xcount = 0; xcount <= 4; xcount ++) + { + pixelgray(buffer, posx * 5 + xcount - 2, posy * 5 + ycount, spritesheed[type][ycount][xcount]); + //like fillbox, just a different position + } + } +} + +int DrawSprite() +{ + char fit = True; + + int xcount, ycount; + right = True; + left = True; + + memset(&changemap, 0, 210); + + //now draw a brick, the sizes are different + //structs and a drawing function would be better, it would save code + + switch(block) + { + case 1: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockO[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 1; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 2: + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 2; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 3: + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockT[dir][ycount][xcount] == 1&& ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 3; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 4: + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockJ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 4; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 5: + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockL[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 5; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 6: + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockZ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 6; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + case 7: + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockS[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0) + { + if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20) + { + fit = False; + } + else + { + changemap[ypos - ycount - 2][xpos - xcount - 2] = 7; + if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20) + { + fit = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1) + { + right = False; + } + if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8) + { + left = False; + } + } + } + } + } + break; + } + return fit; +} + +void DrawBlock() +{ + int xcount, ycount; + + clrbuffer(pScreen); + + drawNumber(pScreen, (int)(level / 10) % 10, 115, 39); + drawNumber(pScreen, (int)(level / 10) % 100 / 10, 115, 43); + + drawString(pScreen, &"LV", 2, 115, 59); + + drawNumber(pScreen, points % 10, 109, 39); + drawNumber(pScreen, points % 100 / 10, 109, 43); + drawNumber(pScreen, points % 1000 / 100, 109, 47); + drawNumber(pScreen, points % 10000 / 1000, 109, 51); + drawNumber(pScreen, points % 100000 / 10000, 109, 55); + drawNumber(pScreen, points % 1000000 / 100000, 109, 59); + drawNumber(pScreen, points / 1000000, 109, 63); + + drawString(pScreen, &"PTS", 3, 103, 51); + + drawString(pScreen, &"LINE", 4, 121, 51); + + drawNumber(pScreen, level % 10, 121, 39); + drawNumber(pScreen, level % 100 / 10, 121, 43); + drawNumber(pScreen, level % 1000 / 100, 121, 47); + + if(DrawSprite() == False) + { + for(ycount = 0; ycount < 20; ycount ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(changemap[ycount + 1][xcount] != 0) + { + globalmap[ycount][xcount] = changemap[ycount + 1][xcount]; + } + } + } + CreateBlock(); + if(nextdir == Fast) + { + nextdir = Down; + } + } + + line(pScreen, 0 , 0 , 101 , 0, 1); + line(pScreen, 0 , 0 , 0 , 51, 1); + line(pScreen, 101 , 0 , 101 , 51, 1); + line(pScreen, 101 , 51 , 0 , 51, 1); + + for(ycount = 0; ycount < 20; ycount ++) + { + for(xcount = 0; xcount < 10; xcount ++) + { + if(globalmap[ycount][xcount] != 0 || changemap[ycount][xcount] != 0) + { + fillbox(pScreen, ycount, xcount, (globalmap[ycount][xcount] != 0)? globalmap[ycount][xcount] - 1 : changemap[ycount][xcount] - 1); + } + } + } + + drawString(pScreen, &"NEXT", 4, 103, 2); + + //draw the next block + + switch(nextblock) + { + case 1 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockO[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 0); + } + } + } + break; + + case 2 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 1); + } + } + } + break; + + case 3 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockT[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 2); + } + } + } + break; + + case 4 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockJ[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 3); + } + } + } + break; + + case 5 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockL[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 4); + } + } + } + break; + + case 6 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockZ[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 5); + } + } + } + break; + + case 7 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockS[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 0 + xcount, 6); + } + } + } + break; + } + + drawString(pScreen, &"HOLD", 4, 103, 22); + + //draw the stored block + + switch(hold) + { + case 1 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockO[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 0); + } + } + } + break; + + case 2 : + for(xcount = 0; xcount < 4; xcount ++) + { + for(ycount = 0; ycount < 4; ycount ++) + { + if(blockI[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 1); + } + } + } + break; + + case 3 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockT[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 2); + } + } + } + break; + + case 4 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockJ[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 3); + } + } + } + break; + + case 5 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockL[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 4); + } + } + } + break; + + case 6 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockZ[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 5); + } + } + } + break; + + case 7 : + for(xcount = 0; xcount < 3; xcount ++) + { + for(ycount = 0; ycount < 3; ycount ++) + { + if(blockS[0][ycount][xcount] == 1) + { + normalfillbox(pScreen, 22 + ycount , 4 + xcount, 6); + } + } + } + break; + } +} @@ -1,15 +1,15 @@ -#ifndef __DRAW_H__
-#define __DRAW_H__
-
-void pixel(char *buffer, int x, int y, int type);
-void pixelgray(char *buffer, int x,int y, int type);
-void line(char *buffer, int x1, int y1, int x2, int y2, int color);
-void drawChar(char *buffer, char charact, int posx, int posy);
-void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy);
-void drawNumber(char *buffer, char num, int posx, int posy);
-void fillbox(char *buffer, int posx, int posy, int type);
-void normalfillbox(char *buffer, int posx, int posy, int type);
-int DrawSprite();
-void DrawBlock();
-
+#ifndef __DRAW_H__ +#define __DRAW_H__ + +void pixel(char *buffer, int x, int y, int type); +void pixelgray(char *buffer, int x,int y, int type); +void line(char *buffer, int x1, int y1, int x2, int y2, int color); +void drawChar(char *buffer, char charact, int posx, int posy); +void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy); +void drawNumber(char *buffer, char num, int posx, int posy); +void fillbox(char *buffer, int posx, int posy, int type); +void normalfillbox(char *buffer, int posx, int posy, int type); +int DrawSprite(); +void DrawBlock(); + #endif
\ No newline at end of file diff --git a/eActivityIcon.bmp b/eActivityIcon.bmp Binary files differnew file mode 100644 index 0000000..104a2c6 --- /dev/null +++ b/eActivityIcon.bmp @@ -1,33 +1,33 @@ -#include "global.h"
-
-char* pScreen;
-//pointer to the 3 graybuffers
-
-char right = True;
-char left = True;
-//can move?
-
-char changemap[21][10] = {0};
-char globalmap [20][10] = {0};
-//the two brickmaps: globalmap is the visible one
-
-char block;
-//block type
-int xpos = 7, ypos = 3;
-char dir;
-//position and direction of brick
-
-int level;
-//current level
-
-unsigned int points = 0;
-//points
-
-char nextdir = Down;
-//the direction for the next round
-
-char nextblock = 1;
-//the next block
-
-char hold = 0;
-//the stored brick
+#include "global.h" + +char* pScreen; +//pointer to the 3 graybuffers + +char right = True; +char left = True; +//can move? + +char changemap[21][10] = {0}; +char globalmap [20][10] = {0}; +//the two brickmaps: globalmap is the visible one + +char block; +//block type +int xpos = 7, ypos = 3; +char dir; +//position and direction of brick + +char level; +//current level + +unsigned int points = 0; +//points + +char nextdir = Down; +//the direction for the next round + +char nextblock = 1; +//the next block + +char hold = 0; +//the stored brick @@ -1,57 +1,57 @@ -#ifndef __GLOBAL_H__
-#define __GLOBAL_H__
-
-#define Dir_0 0
-#define Dir_90 1
-#define Dir_180 2
-#define Dir_270 3
-
-//direction of brick
-
-#define Down 0
-#define Left -1
-#define Right 1
-#define Fast 30
-#define Rot 20
-#define Swap 10
-
-//type of movement
-
-#define False 0
-#define True 1
-
-//for bools
-
-extern char* pScreen;
-//pointer to the 3 graybuffers
-
-extern char right;
-extern char left;
-//can move?
-
-extern char changemap[21][10];
-extern char globalmap [20][10];
-//the two brickmaps: globalmap is the visible one
-
-extern char block;
-//block type
-extern int xpos, ypos;
-extern char dir;
-//position and direction of brick
-
-extern int level;
-//current level
-
-extern unsigned int points;
-//points
-
-extern char nextdir;
-//the direction for the next round
-
-extern char nextblock;
-//the next block
-
-extern char hold;
-//the stored brick
-
+#ifndef __GLOBAL_H__ +#define __GLOBAL_H__ + +#define Dir_0 0 +#define Dir_90 1 +#define Dir_180 2 +#define Dir_270 3 + +//direction of brick + +#define Down 0 +#define Left -1 +#define Right 1 +#define Fast 30 +#define Rot 20 +#define Swap 10 + +//type of movement + +#define False 0 +#define True 1 + +//for bools + +extern char* pScreen; +//pointer to the 3 graybuffers + +extern char right; +extern char left; +//can move? + +extern char changemap[21][10]; +extern char globalmap [20][10]; +//the two brickmaps: globalmap is the visible one + +extern char block; +//block type +extern int xpos, ypos; +extern char dir; +//position and direction of brick + +extern char level; +//current level + +extern unsigned int points; +//points + +extern char nextdir; +//the direction for the next round + +extern char nextblock; +//the next block + +extern char hold; +//the stored brick + #endif
\ No newline at end of file @@ -1,39 +1,39 @@ -int OSVersionAsInt(void)
-{
- unsigned char mainversion;
- unsigned char minorversion;
- unsigned short release;
- unsigned short build;
- GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
- return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
-}
-
-#define isOS2 (OSVersionAsInt() >= 0x02020000)
-
-const unsigned short* keyboardregister = (unsigned short*)0xA44B0000;
-
-unsigned short key[8];
-
-int KeyDown(int keycode)
-{
- if(isOS2)
- {
- int row, col, word, bit;
-
- row = keycode%10;
- col = keycode/10-1;
- word = row>>1;
- bit = col + 8*(row&1);
-
- memcpy(&key, keyboardregister, 8 * sizeof(unsigned short));
-
- return (0 != (key[word] & 1<<bit));
- }
- else
- {
- unsigned char buffer[12];
- KBD_PRGM_GetKey( buffer );
- return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 ) == keycode;
- }
-}
-
+int OSVersionAsInt(void) +{ + unsigned char mainversion; + unsigned char minorversion; + unsigned short release; + unsigned short build; + GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build ); + return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF ); +} + +#define isOS2 (OSVersionAsInt() >= 0x02020000) + +const unsigned short* keyboardregister = (unsigned short*)0xA44B0000; + +unsigned short key[8]; + +int KeyDown(int keycode) +{ + if(isOS2) + { + int row, col, word, bit; + + row = keycode%10; + col = keycode/10-1; + word = row>>1; + bit = col + 8*(row&1); + + memcpy(&key, keyboardregister, 8 * sizeof(unsigned short)); + + return (0 != (key[word] & 1<<bit)); + } + else + { + unsigned char buffer[12]; + KBD_PRGM_GetKey( buffer ); + return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 ) == keycode; + } +} + @@ -1,4 +1,4 @@ -#ifndef __KEY_H__
-#define __KEY_H__
-int KeyDown(int);
+#ifndef __KEY_H__ +#define __KEY_H__ +int KeyDown(int); #endif
\ No newline at end of file diff --git a/matris.rar b/matris.rar Binary files differnew file mode 100644 index 0000000..1374fb1 --- /dev/null +++ b/matris.rar diff --git a/src/MATRIS.G1A b/src/MATRIS.G1A Binary files differnew file mode 100644 index 0000000..2c54587 --- /dev/null +++ b/src/MATRIS.G1A diff --git a/src/MainIcon.bmp b/src/MainIcon.bmp Binary files differnew file mode 100644 index 0000000..3e72743 --- /dev/null +++ b/src/MainIcon.bmp diff --git a/src/Matris.c b/src/Matris.c new file mode 100644 index 0000000..f2f6991 --- /dev/null +++ b/src/Matris.c @@ -0,0 +1,635 @@ +/*Matris by Casimo is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
+see here: http://creativecommons.org/licenses/by-nc-sa/3.0/
+*/
+#include "stdio.h"
+#include "key.h"
+#include "draw.h"
+#include "global.h"
+
+short*APP_EnableRestart()
+{
+ unsigned int ea;
+ unsigned int j;
+ short*pEnableRestartFlag;
+ ea = *(unsigned int*)0x8001007C;
+ ea += 0x0490*4;
+ if ( ea < 0x8001007C ) return 0;
+ if ( ea > 0x81000000 ) return 0;
+ ea = *(unsigned int*)( ea );
+ if ( ea < 0x8001007C ) return 0;
+ if ( ea > 0x81000000 ) return 0;
+ j = *(unsigned char*)( ea + 1 );
+ j *= 4;
+ ea = ( ea + j + 4 ) & 0xFFFFFFFC;
+ if ( ea < 0x8001007C ) return 0;
+ if ( ea > 0x81000000 ) return 0;
+ pEnableRestartFlag = (short*)(*( unsigned int*)( ea ) + 8 );
+ if ( ( (unsigned int)pEnableRestartFlag & 0xFF000000 ) != 0x88000000 ) return 0;
+ if ( pEnableRestartFlag ) *pEnableRestartFlag = 1;
+ return pEnableRestartFlag;
+}
+
+//restart addin after return 1
+
+static unsigned int seed = 123456789;
+unsigned int kiss()
+{
+ // interner Zustand
+ static unsigned int y = 362436000;
+ static unsigned int z = 521288629;
+ static unsigned int c = 7654321;
+
+ unsigned long t;
+
+ // Linearer Kongruenzgenerator
+ seed = 69069 * seed + 12345;
+
+ // Xorshift
+ y ^= y << 13;
+ y ^= y >> 17;
+ y ^= y << 5;
+
+ // Multiply-with-carry
+ t = (unsigned long)698769069 * z + c;
+ c = t >> 32;
+ z = (unsigned int) t;
+
+ return seed + y + z;
+}
+
+void seedkiss()
+{
+ seed = RTC_GetTicks();
+}
+
+//kiss is a random number generator
+
+char *Disp_GetVRAMPtr(void);
+void DrawLineVRAM(int x1, int y1, int x2, int y2);
+void AllClr_DD(void);
+void AllClr_VRAM(void);
+void AllClr_DDVRAM(void);
+void locate(int x, int y);
+void Print(const unsigned char *str);
+int Timer_Install(int TimerID, void (*handler)(void), int delay);
+int Timer_Uninstall(int TimerID);
+int Timer_Start(int TimerID);
+void App_RUN_MAT();
+
+//some prototypes
+
+char swit;
+
+char pause = False;
+//pause the game
+
+char quit = False;
+
+char levelchanged = False;
+//has the level changed during two actions?
+
+char exit = False;
+
+char ready;
+
+char onoff = True;
+//used for timers
+
+char canswap;
+//brick already swapped?
+
+char slowyposdown = 0;
+
+char connected;
+//multiplayer activated?
+
+unsigned char receiveline = 0;
+unsigned char sendline = 0;
+//what to send or receive?
+
+char cantrans = False;
+//allowed to transfer?
+
+//taken from MonochromeLib by PierrotLL
+
+void drawbuffer(char *buffer)
+{
+ char *LCD_register_selector = (char*)0xB4000000, *LCD_data_register = (char*)0xB4010000;
+ int i, j;
+ for(i=0 ; i<64 ; i++)
+ {
+ *LCD_register_selector = 4;
+ *LCD_data_register = i|192;
+ *LCD_register_selector = 4;
+ *LCD_data_register = 0;
+ *LCD_register_selector = 7;
+ for(j=0 ; j<16 ; j++) *LCD_data_register = *buffer++;
+ }
+}
+
+void RestGray(void)
+{
+ drawbuffer(pScreen);
+ drawbuffer(pScreen + 1024);
+ drawbuffer(pScreen + 2048);
+}
+
+
+void Disconnect()
+{
+ Serial_Close(1);
+ connected = False;
+}
+
+void TeacherMode()
+{
+ Timer_Uninstall(6);
+ Timer_Uninstall(7);
+ Disconnect();
+
+ App_RUN_MAT();
+}
+
+int round(float num)
+{
+ return (int) (num + 0.5);
+}
+
+void clrbuffer(char *buffer)
+{
+ memset(buffer, 0, 3072);
+}
+
+
+void CreateBlock()
+{
+ block = nextblock;
+ canswap = True;
+ nextblock = (kiss() % 7) + 1;
+ xpos = 7;
+ ypos = 3;
+ dir = 0;
+ left = True;
+ right = True;
+ cantrans = True;
+}
+
+void ResetValues()
+{
+ int x,y;
+
+ char text[30];
+
+ memset(&changemap, 0, 210);
+ memset(&globalmap, 0, 210);
+
+ ypos = 3;
+ xpos = 0;
+ block = 0;
+ onoff = True;
+ levelchanged = False;
+ right = True;
+ left = True;
+ hold = 0;
+ exit = False;
+ nextdir = Down;
+ nextblock = (kiss() % 7) + 1;
+ CreateBlock();
+ clrbuffer(pScreen);
+ Timer_Uninstall(6);
+ Timer_Uninstall(7);
+ ready = True;
+ connected = False;
+
+ AllClr_DDVRAM();
+
+ PopUpWin(2);
+ sprintf(&text, "Points: %d", points);
+ locate(3, 3);
+ Print(&text);
+ sprintf(&text, "Level: %d", level);
+ locate(3, 4);
+ Print(&text);
+ PutDisp_DD();
+
+ points = 0;
+ level = 0;
+
+ while(!KeyDown(31));
+}
+
+void Transfer()
+{
+ int xcount, ycount;
+ char space = kiss() % 10; //where is the hole?
+
+ if(connected == True)
+ {
+ if(receiveline > sendline)
+ {
+ //if there are lines arriving, but there can be send lines back, erase the lines, for example: receiving 3 lines, sending 1 -> 0 are send, 2 are received
+ receiveline -= sendline;
+ sendline = 0;
+ }
+ else
+ {
+ sendline -= receiveline;
+ receiveline = 0;
+ }
+ if(sendline > 0)
+ {
+ while(Serial_BufferedTransmitOneByte(sendline) != 0);
+ //send the number of lines
+ sendline = 0;
+ }
+ if(receiveline > 0)
+ {
+ for(ycount = 0; ycount < 20 - receiveline; ycount++)
+ {
+ for(xcount = 0; xcount < 10; xcount++)
+ {
+ globalmap[ycount][xcount] = globalmap[ycount + receiveline][xcount];
+ //move all lines upwards
+ }
+ }
+
+ for(ycount = 19; ycount > 19 - receiveline; ycount --)
+ {
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ globalmap[ycount][xcount] = (xcount == space) ? 0 : (kiss() % 7) + 1;
+ //add lines at the bottom
+ }
+ }
+ receiveline = 0;
+ }
+ }
+}
+
+void receive(void)
+{
+ unsigned char receiveadd = 0;
+
+ if(Serial_ReadOneByte(&receiveadd) != 0)
+ {
+ receiveadd = 0;
+ }
+
+ receiveline += (receiveadd > 20)?0:receiveadd;
+}
+
+void Connect()
+{
+ unsigned char connstart = 111;
+ unsigned char answer;
+ char open_mode[6];
+
+ PopUpWin(1);
+ locate( 5 , 4);
+ Print("Connecting...");
+ PutDisp_DD();
+
+ open_mode[ 0 ] = 0; // always 0
+ open_mode[ 1 ] = 9; // 0=300, 1=600, 2=1200, 3=2400, 4=4800, 5=9600, 6=19200, 7=38400, 8=57600, 9=115200 baud
+ open_mode[ 2 ] = 2; // parity: 0=no; 1=odd; 2=even
+ open_mode[ 3 ] = 0; // datalength: 0=8 bit; 1=7 bit
+ open_mode[ 4 ] = 0; // stop bits: 0=one; 1=two
+ open_mode[ 5 ] = 0; // always 0
+
+ Serial_Open( &open_mode );
+
+ do
+ {
+ Serial_BufferedTransmitOneByte(connstart);
+ Serial_ReadOneByte(&answer);
+ }while(answer != connstart && !KeyDown(47));
+
+ if(!KeyDown(47))connected = True;
+
+ if(connected != True)
+ {
+ Disconnect();
+ }
+}
+
+void SwapPieces()
+{
+ char save;
+ if(canswap == True)
+ {
+ save = block;
+ if(hold == 0)
+ {
+ block = nextblock;
+ nextblock = (kiss() % 7) + 1;
+ }
+ else
+ {
+ block = hold;
+ }
+ hold = save;
+ xpos = 7;
+ ypos = 3;
+ dir = 0;
+ }
+ canswap = False;
+}
+
+void Rotate()
+{
+ if(++dir == 4)
+ {
+ dir = 0;
+ }
+
+ if(DrawSprite() == False)
+ {
+ dir = (dir == 0)? 3 : dir - 1;
+ }
+}
+
+void MoveBlock()
+{
+ switch (nextdir)
+ {
+ case Left : if(left == True) {xpos ++;} nextdir = Down;break;
+ case Right: if(right == True){xpos --;}nextdir = Down;break;
+ case Rot : Rotate();nextdir = Down;break;
+ case Swap: SwapPieces();nextdir = Down;break;
+ }
+
+ if(nextdir == Fast && (int)slowyposdown == slowyposdown)
+ {
+ points += 1;
+ }
+}
+
+void CheckPoints()
+{
+ char typecount = 0;
+ char oldlevel;
+ int xcount, ycount;
+ int ycount2, ycount3;
+ char fulllinecount = 0;
+
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ if(globalmap[0][xcount] != 0)
+ {
+ exit = True;
+ //game over
+ }
+ }
+
+ for(ycount = 0; ycount < 20; ycount ++)
+ {
+ fulllinecount = 0;
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ if(globalmap[ycount][xcount] != 0)
+ {
+ fulllinecount ++;
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if(fulllinecount == 10)
+ {
+ typecount ++;
+
+ //1: single, 2: double, 3: triple line, 4: tetris (maximum)
+
+ for(ycount2 = ycount; ycount2 > 0; ycount2 --)
+ {
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ globalmap[ycount2][xcount] = globalmap[ycount2 - 1][xcount];
+ //move averything
+ }
+ }
+
+ line(pScreen, 0 , 0 , 81 , 0, 1);
+ line(pScreen, 0 , 0 , 0 , 41, 1);
+ line(pScreen, 81 , 0 , 81 , 41, 1);
+ line(pScreen, 81 , 41 , 0 , 41, 1);
+
+ for(ycount3 = 0; ycount3 < 20; ycount3 ++)
+ {
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ if(globalmap[ycount3][xcount] != 0 || changemap[ycount3][xcount] != 0)
+ {
+ fillbox(pScreen, ycount3, xcount, (globalmap[ycount3][xcount] != 0)? globalmap[ycount3][xcount] - 1 : changemap[ycount3][xcount] - 1);
+ }
+ }
+ }
+ }
+ }
+ if(typecount > 0)
+ {
+ int blink;
+
+ points += (typecount == 1)? 40 * (level + 1): (typecount == 2)? 100 * level : (typecount == 3)? 300 *(level + 1): (typecount == 4)? 1200 * (level + 1) : 0;
+ //increment points
+
+ sendline = (typecount == 4)? 4 : typecount - 1;
+ //send a line, if not tetris send lines - 1
+ oldlevel = level;
+ level += typecount;
+ if((int)(level / 10) != (int)(oldlevel / 10) && level < 200)
+ {
+ levelchanged = True;
+ //level = round cleared lines / 10
+ }
+ }
+ Transfer();
+}
+
+void ReadKey()
+{
+ nextdir =Down;
+
+ if(KeyDown(38)) nextdir = Rot;
+ if(KeyDown(37)) nextdir = Left ;
+ if(KeyDown(28)) nextdir = Right;
+ if(KeyDown(27)) nextdir = Fast;
+ if(KeyDown(47)) exit = True;
+ if(KeyDown(26)) nextdir = Swap;
+ if(KeyDown(31)) TeacherMode();
+ if(KeyDown(39)) {pause = (pause == True)? False : True; while(KeyDown(39));}
+}
+
+void Main(void)
+{
+ cantrans = False;
+ ready = False;
+ if(pause == False)
+ {
+ receive();
+ ypos += (slowyposdown % 10 == 0 || nextdir == Fast)? 1 : 0;
+ if(nextdir == Left || nextdir == Right || nextdir == Fast || nextdir == Rot || slowyposdown % 10 == 0)
+ {
+ MoveBlock();
+ DrawBlock();
+ if(cantrans == True)
+ {
+ CheckPoints();
+ DrawBlock();
+ }
+ }
+ slowyposdown++;
+ }
+ ready = True;
+ drawNumber(pScreen, connected, 0, 62);
+ drawNumber(pScreen + 1024, connected, 0, 62);
+ drawNumber(pScreen + 2048, connected, 0, 62);
+}
+
+void CallMain(void)
+{
+ ReadKey();
+ if(nextdir == Fast && onoff == False)
+ {
+ while(ready == False);
+ onoff = True;
+ Timer_Uninstall(7);
+ Timer_Install(7, &Main, 50);
+ Timer_Start(7);
+ if(nextdir == Down)
+ {
+ nextdir = Fast;
+ }
+ }
+ else
+ {
+ if(nextdir != Fast && onoff == True || levelchanged == True)
+ {
+ while(ready == False);
+ onoff = False;
+ Timer_Uninstall(7);
+
+ if(level < 20)
+ {
+ Timer_Install(7, &Main, 100 - level * 5);
+ }
+ else
+ {
+ Timer_Install(7, &Main, 0);
+ }
+
+ Timer_Start(7);
+ levelchanged = False;
+ }
+ }
+}
+
+//the code above is not good, CallMain handles the keys and sets the timer of Main
+
+void ReadMenuKeys()
+{
+ if(KeyDown(31)) TeacherMode();
+ if(KeyDown(47)) quit = True;
+}
+
+int AddIn_main(int isAppli, unsigned short OptionNum)
+{
+ char c[] = {0xE6, 0x9B, 0};
+ char mode = 0;
+
+ level = 0;
+
+ pScreen = (char*)malloc(3072);
+
+ nextblock = (kiss() % 7) + 1;
+ CreateBlock();
+
+ ready = True;
+
+ APP_EnableRestart();//thx to SimonLothar
+
+ seedkiss();//seed random numbers
+
+ while(mode != 3)
+ {
+ quit = False;
+ Timer_Install(10, &ReadMenuKeys, 200);
+ Timer_Start(10);
+ while(!KeyDown(31) && mode != 3)
+ {
+ AllClr_VRAM();
+
+ locate( 6, 3 );
+ Print(&"Singleplayer");
+ locate( 6, 4 );
+ Print(&"Multiplayer");
+ locate( 2, 8);
+ Print(&"Copyright by Casimo");
+
+ locate( 4, 3 + mode);
+ PrintC(&c);
+
+ PutDisp_DD();
+
+ if(KeyDown(37))
+ {
+ mode += (mode == 1)? -1 : 1;
+ while(KeyDown(37));
+ }
+ else
+ {
+ if(KeyDown(28))
+ {
+ mode -= (mode == 0)? -1 : 1;
+ while(KeyDown(28));
+ }
+ else
+ {
+ if(KeyDown(47))
+ {
+ mode = 3;
+ while(KeyDown(47));
+ }
+ }
+
+ }
+ }
+
+ Timer_Uninstall(10);
+
+ if(mode != 3)
+ {
+ if(mode == 1)
+ {
+ Serial_ClearReceiveBuffer();
+ Connect();
+ }
+
+ Timer_Install(6,&CallMain, 150);
+ Timer_Start(6);
+
+ while(exit == False){RestGray();}
+
+ ResetValues();
+
+ while(KeyDown(47));
+ while(KeyDown(31));
+ }
+ }
+ Timer_Uninstall(6);
+ Timer_Uninstall(7);
+ Disconnect();
+ free(pScreen);
+}
+
+//I'm sure there are unused variables
+
+#pragma section _BR_Size
+unsigned long BR_Size;
+#pragma section
+#pragma section _TOP
+int InitializeSystem(int isAppli, unsigned short OptionNum)
+{return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}
+#pragma section
diff --git a/src/SYSCALLS.src b/src/SYSCALLS.src new file mode 100644 index 0000000..d4234f6 --- /dev/null +++ b/src/SYSCALLS.src @@ -0,0 +1,65 @@ + .SECTION P,CODE,ALIGN=4
+ .MACRO SYSCALL FUNO, SYSCALLNAME, TAIL=nop
+ .export \SYSCALLNAME'
+\SYSCALLNAME'
+ mov.l #h'\FUNO, r0
+ mov.l #H'80010070, r2
+ jmp @r2
+ \TAIL'
+ .ENDM
+
+ SYSCALL 040C, _Serial_ReadOneByte
+ SYSCALL 040E, _Serial_BufferedTransmitOneByte
+ SYSCALL 0418, _Serial_Open
+ SYSCALL 0419, _Serial_Close
+ SYSCALL 0413, _Serial_ClearReceiveBuffer
+ SYSCALL 003B, _RTC_GetTicks
+ SYSCALL 06C4, _KBD_PRGM_GetKey
+ SYSCALL 0135, _Disp_GetVRAMPtr
+ SYSCALL 0028, _PutDisp_DD
+ SYSCALL 0030, _DrawLineVRAM
+ SYSCALL 0142, _AllClr_DD
+ SYSCALL 0143, _AllClr_VRAM
+ SYSCALL 0144, _AllClr_DDVRAM
+ SYSCALL 0420, _Sleep
+ SYSCALL 090F, _GetKey
+ SYSCALL 0807, _locate
+ SYSCALL 0808, _Print
+ SYSCALL 0118, _Timer_Install
+ SYSCALL 0119, _Timer_Uninstall
+ SYSCALL 011A, _Timer_Start
+
+ SYSCALL 0160, _itoa
+ SYSCALL 08DB, _EditExpression
+ SYSCALL 0236, _Reboot
+
+ SYSCALL 023E, _RTC_SetDateTime
+ SYSCALL 0039, _RTC_Reset
+ SYSCALL 003A, _RTC_GetTime
+
+ SYSCALL 03F4, _PowerOff ;PowerOff(int DisplayPowerOffLogo)
+ SYSCALL 040E, _Serial_WriteByte
+ SYSCALL 0910, _PutKey
+ SYSCALL 0032, _ShapeToDD
+ SYSCALL 0CC5, _InputString
+
+ SYSCALL 0985, _App_CONICS
+ SYSCALL 0998, _App_DYNA
+ SYSCALL 09E2, _App_EQUA
+ SYSCALL 09F5, _App_PROG
+ SYSCALL 0A00, _App_FINANCE
+ SYSCALL 0A48, _App_GRAPH_TABLE
+ SYSCALL 0A4A, _App_LINK
+ SYSCALL 0A6B, _App_MEMORY
+ SYSCALL 0A75, _App_RECUR
+ SYSCALL 0AAE, _App_RUN_MAT
+ SYSCALL 0AC6, _App_RUN_STAT
+ SYSCALL 0AC8, _App_SYSTEM
+
+ SYSCALL 0D64, _InputDateDialog
+ SYSCALL 05A6, _BCD_SetAsInt
+ SYSCALL 0015, _GlibGetOSVersionInfo
+ SYSCALL 0160, _LongToAsc
+ SYSCALL 02A0, _USB_CaptureDisplay
+ SYSCALL 0137, _GetMiniGlyph
+ .end
diff --git a/src/Sprites.h b/src/Sprites.h new file mode 100644 index 0000000..1519e99 --- /dev/null +++ b/src/Sprites.h @@ -0,0 +1,443 @@ +#ifndef __SPRITES_H__
+#define __SPRITES_H__
+
+int numbers[10][5][3] = {
+{
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 }},
+
+{{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 0 , 0 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 }
+},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 0 , 1 },
+{ 0 , 0 , 1 },
+{ 0 , 0 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 }},
+};
+
+int character[26][5][3] = {
+{{ 0 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 }},
+
+{{ 1 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 0 }},
+
+{{ 0 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 },
+{ 0 , 1 , 1 }},
+
+{{ 1 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 0 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 }},
+
+{{ 0 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 }},
+
+{{ 1 , 1 , 1 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 1 , 1 , 1 }},
+
+{{ 0 , 0 , 1 },
+{ 0 , 0 , 1 },
+{ 0 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 1 , 0 },
+{ 1 , 1 , 0 },
+{ 1 , 1 , 0 },
+{ 1 , 0 , 1 }},
+
+{{ 1 , 0 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 0 }},
+
+{{ 0 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 0 , 0 }},
+
+{{ 0 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 1 }},
+
+{{ 1 , 1 , 0 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 0 },
+{ 1 , 1 , 0 },
+{ 1 , 0 , 1 }},
+
+{{ 0 , 1 , 1 },
+{ 1 , 0 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 0 , 1 },
+{ 1 , 1 , 0 }},
+
+{{ 1 , 1 , 1 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 1 , 1 , 1 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 0 , 1 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 1 , 0 , 1 }},
+
+{{ 1 , 0 , 1 },
+{ 1 , 0 , 1 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 }},
+
+{{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+{ 0 , 1 , 0 },
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 }},
+};
+
+int blockO[4][3][4] = {
+{
+{ 0 , 1 , 1 , 0 },
+{ 0 , 1 , 1 , 0 },
+{ 0 , 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 1 , 0 },
+{ 0 , 1 , 1 , 0 },
+{ 0 , 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 1 , 0 },
+{ 0 , 1 , 1 , 0 },
+{ 0 , 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 1 , 0 },
+{ 0 , 1 , 1 , 0 },
+{ 0 , 0 , 0 , 0 },
+}
+};
+
+int blockJ[4][3][3] = {
+{
+{ 1 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 1 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+},
+{
+{ 0 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 1 },
+},
+{
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 1 , 1 , 0 },
+}
+};
+
+int blockT[4][3][3] = {
+{
+{ 0 , 1 , 0 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 0 },
+{ 0 , 1 , 1 },
+{ 0 , 1 , 0 },
+},
+{
+{ 0 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 0 , 1 , 0 },
+},
+{
+{ 0 , 1 , 0 },
+{ 1 , 1 , 0 },
+{ 0 , 1 , 0 },
+}
+};
+
+int blockL[4][3][3] = {
+{
+{ 0 , 0 , 1 },
+{ 1 , 1 , 1 },
+{ 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 1 },
+},
+{
+{ 0 , 0 , 0 },
+{ 1 , 1 , 1 },
+{ 1 , 0 , 0 },
+},
+{
+{ 1 , 1 , 0 },
+{ 0 , 1 , 0 },
+{ 0 , 1 , 0 },
+}
+};
+
+int blockI[4][4][4] = {
+{
+{ 0 , 0 , 0 , 0 },
+{ 1 , 1 , 1 , 1 },
+{ 0 , 0 , 0 , 0 },
+{ 0 , 0 , 0 , 0 }
+},
+{
+{ 0 , 0 , 1 , 0 },
+{ 0 , 0 , 1 , 0 },
+{ 0 , 0 , 1 , 0 },
+{ 0 , 0 , 1 , 0 }
+},
+{
+{ 0 , 0 , 0 , 0 },
+{ 0 , 0 , 0 , 0 },
+{ 1 , 1 , 1 , 1 },
+{ 0 , 0 , 0 , 0 }
+},
+{
+{ 0 , 1 , 0 , 0 },
+{ 0 , 1 , 0 , 0 },
+{ 0 , 1 , 0 , 0 },
+{ 0 , 1 , 0 , 0 }
+}
+};
+
+int blockZ[4][3][3] = {
+{
+{ 1 , 1 , 0 },
+{ 0 , 1 , 1 },
+{ 0 , 0 , 0 }
+},
+{
+{ 0 , 0 , 1 },
+{ 0 , 1 , 1 },
+{ 0 , 1 , 0 },
+},
+{
+{ 0 , 0 , 0 },
+{ 1 , 1 , 0 },
+{ 0 , 1 , 1 },
+},
+{
+{ 0 , 0 , 1 },
+{ 0 , 1 , 1 },
+{ 0 , 1 , 0 },
+}
+};
+
+int blockS[4][3][3] = {
+{
+{ 0 , 1 , 1 },
+{ 1 , 1 , 0 },
+{ 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 0 },
+{ 0 , 1 , 1 },
+{ 0 , 0 , 1 },
+},
+{
+{ 0 , 1 , 1 },
+{ 1 , 1 , 0 },
+{ 0 , 0 , 0 },
+},
+{
+{ 0 , 1 , 0 },
+{ 0 , 1 , 1 },
+{ 0 , 0 , 1 },
+}
+};
+
+int spritesheed[7][5][5] = {
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 0 , 0 , 0 , 3 },
+{ 3 , 0 , 3 , 0 , 3 },
+{ 3 , 0 , 0 , 0 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 1 , 1 , 1 , 3 },
+{ 3 , 1 , 0 , 1 , 3 },
+{ 3 , 1 , 1 , 1 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 1 , 1 , 1 , 3 },
+{ 3 , 1 , 0 , 2 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 1 , 2 , 2 , 3 },
+{ 3 , 2 , 2 , 1 , 3 },
+{ 3 , 2 , 1 , 2 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 1 , 1 , 1 , 3 },
+{ 3 , 1 , 3 , 1 , 3 },
+{ 3 , 1 , 1 , 1 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+},
+{
+{ 3 , 3 , 3 , 3 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 2 , 0 , 2 , 3 },
+{ 3 , 2 , 2 , 2 , 3 },
+{ 3 , 3 , 3 , 3 , 3 },
+}
+};
+
+#endif
\ No newline at end of file diff --git a/src/draw.c b/src/draw.c new file mode 100644 index 0000000..de2d6c5 --- /dev/null +++ b/src/draw.c @@ -0,0 +1,655 @@ +#include "sprites.h"
+#include "global.h"
+
+//also from ML, a bit modified
+
+void pixel(char *buffer, int x, int y, int type)
+{
+ if(x&~127 || y&~63) return;
+ switch (type)
+ {
+ case 0:
+ (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ break;
+ case 1:
+ (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ break;
+ }
+}
+
+void pixelgray(char *buffer, int x,int y, int type)
+{
+ switch (type)
+ {
+ case 0:
+ (*(buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ (*(1024 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ (*(2048 + buffer + (y << 4) + (x >> 3))) &= ( ~ (128 >> (x & 7)));
+ break;
+ case 3:
+ (*(2048 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ case 2:
+ (*(1024 + buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ case 1:
+ (*(buffer + (y << 4) + (x >> 3))) |= (128 >> (x & 7));
+ break;
+ }
+}
+
+#define Abs(x) ((x < 0)? -x : x)
+#define sgn(x) (x == 0)?0:(x > 0)?1:-1
+
+void line(char *buffer, int x1, int y1, int x2, int y2, int color)
+{
+ int i, x, y, dx, dy, sx, sy, cumul;
+
+ y1 = y1 + 7;
+ y2 = y2 + 7;
+
+ x = x1;
+ y = y1;
+ dx = x2 - x1;
+ dy = y2 - y1;
+ sx = sgn(dx);
+ sy = sgn(dy);
+ dx = Abs(dx);
+ dy = Abs(dy);
+ pixel(buffer, x, y, color);
+ if(dx > dy)
+ {
+ cumul = dx / 2;
+ for(i=1 ; i<dx ; i++)
+ {
+ x += sx;
+ cumul += dy;
+ if(cumul > dx)
+ {
+ cumul -= dx;
+ y += sy;
+ }
+ pixel(buffer, x, y, color);
+ }
+ }
+ else
+ {
+ cumul = dy / 2;
+ for(i=1 ; i<dy ; i++)
+ {
+ y += sy;
+ cumul += dx;
+ if(cumul > dy)
+ {
+ cumul -= dy;
+ x += sx;
+ }
+ pixel(buffer, x, y, color);
+ }
+ }
+}
+//end of ML stuff
+
+void drawChar(char *buffer, char charact, int posx, int posy)
+{
+ int xcount, ycount;
+
+ for(xcount = 0; xcount < 5; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ pixel(buffer, posx + xcount, posy - ycount, character[charact - 65][xcount][ycount]);
+ //this should be optimized: it is drawed pixel per pixel
+ }
+ }
+}
+
+void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy)
+{
+ int ycount, charcount;
+
+ for(charcount = strlenght - 1 , ycount = posy; charcount >= 0; charcount --, ycount += 4)
+ {
+ drawChar(buffer, *(string + charcount), posx, ycount);
+ //every char seperately
+ }
+}
+
+void drawNumber(char *buffer, char num, int posx, int posy)
+{
+ int xcount, ycount;
+
+ for(xcount = 0; xcount < 5; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ pixel(buffer, (int)posx + xcount, (int)posy - ycount, (int)numbers[num][xcount][ycount]);
+ //like drawChar
+ }
+ }
+}
+
+void fillbox(char *buffer, int posx, int posy, int type)
+{
+ int ycount, xcount;
+
+ for(ycount = 0; ycount <= 4; ycount ++)
+ {
+ for(xcount = 0; xcount <= 4; xcount ++)
+ {
+ pixelgray(buffer, posx * 5 + xcount + 1, posy * 5 + ycount + 1 + 7, spritesheed[type][ycount][xcount]);
+ //draw a brick box pixel per pixel
+ }
+ }
+}
+
+void normalfillbox(char *buffer, int posx, int posy, int type)
+{
+ int ycount, xcount;
+
+ for(ycount = 0; ycount <= 4; ycount ++)
+ {
+ for(xcount = 0; xcount <= 4; xcount ++)
+ {
+ pixelgray(buffer, posx * 5 + xcount - 2, posy * 5 + ycount, spritesheed[type][ycount][xcount]);
+ //like fillbox, just a different position
+ }
+ }
+}
+
+int DrawSprite()
+{
+ char fit = True;
+
+ int xcount, ycount;
+ right = True;
+ left = True;
+
+ memset(&changemap, 0, 210);
+
+ //now draw a brick, the sizes are different
+ //structs and a drawing function would be better, it would save code
+
+ switch(block)
+ {
+ case 1:
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockO[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 1;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 2:
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 4; ycount ++)
+ {
+ if(blockI[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 2;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 3:
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockT[dir][ycount][xcount] == 1&& ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 3;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 4:
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockJ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 4;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 5:
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockL[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 5;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 6:
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockZ[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 6;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ case 7:
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockS[dir][ycount][xcount] == 1 && ypos - ycount - 2 >= 0)
+ {
+ if(xpos - xcount - 2 < 0 || xpos - xcount - 2 > 9 || ypos - ycount - 2 > 20)
+ {
+ fit = False;
+ }
+ else
+ {
+ changemap[ypos - ycount - 2][xpos - xcount - 2] = 7;
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 2] != 0 || ypos - ycount - 2 >= 20)
+ {
+ fit = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount - 1 - 2] != 0 || xpos - xcount - 2 < 1)
+ {
+ right = False;
+ }
+ if(globalmap[ypos - ycount - 2][xpos - xcount + 1 - 2] != 0 || xpos - xcount - 2 > 8)
+ {
+ left = False;
+ }
+ }
+ }
+ }
+ }
+ break;
+ }
+ return fit;
+}
+
+void DrawBlock()
+{
+ int xcount, ycount;
+
+ clrbuffer(pScreen);
+
+ drawNumber(pScreen, (int)(level / 10) % 10, 115, 39);
+ drawNumber(pScreen, (int)(level / 10) % 100 / 10, 115, 43);
+
+ drawString(pScreen, &"LV", 2, 115, 59);
+
+ drawNumber(pScreen, points % 10, 109, 39);
+ drawNumber(pScreen, points % 100 / 10, 109, 43);
+ drawNumber(pScreen, points % 1000 / 100, 109, 47);
+ drawNumber(pScreen, points % 10000 / 1000, 109, 51);
+ drawNumber(pScreen, points % 100000 / 10000, 109, 55);
+ drawNumber(pScreen, points % 1000000 / 100000, 109, 59);
+ drawNumber(pScreen, points / 1000000, 109, 63);
+
+ drawString(pScreen, &"PTS", 3, 103, 51);
+
+ drawString(pScreen, &"LINE", 4, 121, 51);
+
+ drawNumber(pScreen, level % 10, 121, 39);
+ drawNumber(pScreen, level % 100 / 10, 121, 43);
+ drawNumber(pScreen, level % 1000 / 100, 121, 47);
+
+ if(DrawSprite() == False)
+ {
+ for(ycount = 0; ycount < 20; ycount ++)
+ {
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ if(changemap[ycount + 1][xcount] != 0)
+ {
+ globalmap[ycount][xcount] = changemap[ycount + 1][xcount];
+ }
+ }
+ }
+ CreateBlock();
+ if(nextdir == Fast)
+ {
+ nextdir = Down;
+ }
+ }
+
+ line(pScreen, 0 , 0 , 101 , 0, 1);
+ line(pScreen, 0 , 0 , 0 , 51, 1);
+ line(pScreen, 101 , 0 , 101 , 51, 1);
+ line(pScreen, 101 , 51 , 0 , 51, 1);
+
+ for(ycount = 0; ycount < 20; ycount ++)
+ {
+ for(xcount = 0; xcount < 10; xcount ++)
+ {
+ if(globalmap[ycount][xcount] != 0 || changemap[ycount][xcount] != 0)
+ {
+ fillbox(pScreen, ycount, xcount, (globalmap[ycount][xcount] != 0)? globalmap[ycount][xcount] - 1 : changemap[ycount][xcount] - 1);
+ }
+ }
+ }
+
+ drawString(pScreen, &"NEXT", 4, 103, 2);
+
+ //draw the next block
+
+ switch(nextblock)
+ {
+ case 1 :
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockO[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 0);
+ }
+ }
+ }
+ break;
+
+ case 2 :
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 4; ycount ++)
+ {
+ if(blockI[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 1);
+ }
+ }
+ }
+ break;
+
+ case 3 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockT[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 2);
+ }
+ }
+ }
+ break;
+
+ case 4 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockJ[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 3);
+ }
+ }
+ }
+ break;
+
+ case 5 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockL[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 4);
+ }
+ }
+ }
+ break;
+
+ case 6 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockZ[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 5);
+ }
+ }
+ }
+ break;
+
+ case 7 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockS[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 0 + xcount, 6);
+ }
+ }
+ }
+ break;
+ }
+
+ drawString(pScreen, &"HOLD", 4, 103, 22);
+
+ //draw the stored block
+
+ switch(hold)
+ {
+ case 1 :
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockO[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 0);
+ }
+ }
+ }
+ break;
+
+ case 2 :
+ for(xcount = 0; xcount < 4; xcount ++)
+ {
+ for(ycount = 0; ycount < 4; ycount ++)
+ {
+ if(blockI[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 1);
+ }
+ }
+ }
+ break;
+
+ case 3 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockT[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 2);
+ }
+ }
+ }
+ break;
+
+ case 4 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockJ[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 3);
+ }
+ }
+ }
+ break;
+
+ case 5 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockL[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 4);
+ }
+ }
+ }
+ break;
+
+ case 6 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockZ[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 5);
+ }
+ }
+ }
+ break;
+
+ case 7 :
+ for(xcount = 0; xcount < 3; xcount ++)
+ {
+ for(ycount = 0; ycount < 3; ycount ++)
+ {
+ if(blockS[0][ycount][xcount] == 1)
+ {
+ normalfillbox(pScreen, 22 + ycount , 4 + xcount, 6);
+ }
+ }
+ }
+ break;
+ }
+}
diff --git a/src/draw.h b/src/draw.h new file mode 100644 index 0000000..2a9f9de --- /dev/null +++ b/src/draw.h @@ -0,0 +1,15 @@ +#ifndef __DRAW_H__
+#define __DRAW_H__
+
+void pixel(char *buffer, int x, int y, int type);
+void pixelgray(char *buffer, int x,int y, int type);
+void line(char *buffer, int x1, int y1, int x2, int y2, int color);
+void drawChar(char *buffer, char charact, int posx, int posy);
+void drawString(char *buffer, char *string, unsigned char strlenght, int posx, int posy);
+void drawNumber(char *buffer, char num, int posx, int posy);
+void fillbox(char *buffer, int posx, int posy, int type);
+void normalfillbox(char *buffer, int posx, int posy, int type);
+int DrawSprite();
+void DrawBlock();
+
+#endif
\ No newline at end of file diff --git a/src/global.c b/src/global.c new file mode 100644 index 0000000..d3afdab --- /dev/null +++ b/src/global.c @@ -0,0 +1,33 @@ +#include "global.h"
+
+char* pScreen;
+//pointer to the 3 graybuffers
+
+char right = True;
+char left = True;
+//can move?
+
+char changemap[21][10] = {0};
+char globalmap [20][10] = {0};
+//the two brickmaps: globalmap is the visible one
+
+char block;
+//block type
+int xpos = 7, ypos = 3;
+char dir;
+//position and direction of brick
+
+char level;
+//current level
+
+unsigned int points = 0;
+//points
+
+char nextdir = Down;
+//the direction for the next round
+
+char nextblock = 1;
+//the next block
+
+char hold = 0;
+//the stored brick
diff --git a/src/global.h b/src/global.h new file mode 100644 index 0000000..1634c89 --- /dev/null +++ b/src/global.h @@ -0,0 +1,57 @@ +#ifndef __GLOBAL_H__
+#define __GLOBAL_H__
+
+#define Dir_0 0
+#define Dir_90 1
+#define Dir_180 2
+#define Dir_270 3
+
+//direction of brick
+
+#define Down 0
+#define Left -1
+#define Right 1
+#define Fast 30
+#define Rot 20
+#define Swap 10
+
+//type of movement
+
+#define False 0
+#define True 1
+
+//for bools
+
+extern char* pScreen;
+//pointer to the 3 graybuffers
+
+extern char right;
+extern char left;
+//can move?
+
+extern char changemap[21][10];
+extern char globalmap [20][10];
+//the two brickmaps: globalmap is the visible one
+
+extern char block;
+//block type
+extern int xpos, ypos;
+extern char dir;
+//position and direction of brick
+
+extern char level;
+//current level
+
+extern unsigned int points;
+//points
+
+extern char nextdir;
+//the direction for the next round
+
+extern char nextblock;
+//the next block
+
+extern char hold;
+//the stored brick
+
+#endif
\ No newline at end of file diff --git a/src/key.c b/src/key.c new file mode 100644 index 0000000..9083fbd --- /dev/null +++ b/src/key.c @@ -0,0 +1,39 @@ +int OSVersionAsInt(void)
+{
+ unsigned char mainversion;
+ unsigned char minorversion;
+ unsigned short release;
+ unsigned short build;
+ GlibGetOSVersionInfo( &mainversion, &minorversion, &release, &build );
+ return ( ( mainversion << 24 ) & 0xFF000000 ) | ( ( minorversion << 16 ) & 0x00FF0000 ) | ( release & 0x0000FFFF );
+}
+
+#define isOS2 (OSVersionAsInt() >= 0x02020000)
+
+const unsigned short* keyboardregister = (unsigned short*)0xA44B0000;
+
+unsigned short key[8];
+
+int KeyDown(int keycode)
+{
+ if(isOS2)
+ {
+ int row, col, word, bit;
+
+ row = keycode%10;
+ col = keycode/10-1;
+ word = row>>1;
+ bit = col + 8*(row&1);
+
+ memcpy(&key, keyboardregister, 8 * sizeof(unsigned short));
+
+ return (0 != (key[word] & 1<<bit));
+ }
+ else
+ {
+ unsigned char buffer[12];
+ KBD_PRGM_GetKey( buffer );
+ return ( buffer[1] & 0x0F ) * 10 + ( ( buffer[2] & 0xF0 ) >> 4 ) == keycode;
+ }
+}
+
diff --git a/src/key.h b/src/key.h new file mode 100644 index 0000000..dd4a005 --- /dev/null +++ b/src/key.h @@ -0,0 +1,4 @@ +#ifndef __KEY_H__
+#define __KEY_H__
+int KeyDown(int);
+#endif
\ No newline at end of file |
