From ba07c2bc98fdba991b6d6444d57f0f897cf5959f Mon Sep 17 00:00:00 2001 From: schneefux Date: Sun, 12 Jun 2016 20:08:57 +0200 Subject: import full project --- AddinInfo.txt | 12 + Debug/Addin.mak | 181 ++ Debug/Drawing.lst | 71 + Debug/FXADDINror.abs | Bin 0 -> 43564 bytes Debug/FXADDINror.bin | Bin 0 -> 29464 bytes Debug/FXADDINror.dbg | Bin 0 -> 34776 bytes Debug/FXADDINror.fsy | 293 +++ Debug/FXADDINror.map | 1025 +++++++++ Debug/FuckinRev.lst | 71 + Debug/Matris.lst | 3305 +++++++++++++++++++++++++++ Debug/Matris.obj | Bin 0 -> 32692 bytes Debug/SYSCALLS.obj | Bin 0 -> 6136 bytes Debug/draw.lst | 5879 +++++++++++++++++++++++++++++++++++++++++++++++++ Debug/draw.obj | Bin 0 -> 26328 bytes Debug/global.lst | 203 ++ Debug/global.obj | Bin 0 -> 3456 bytes Debug/key.lst | 335 +++ Debug/key.obj | Bin 0 -> 4472 bytes FXSH_Build.bat | 22 + INIT/CasioRAM.mem | Bin 0 -> 63772 bytes INIT/CasioRAMCPU.mem | Bin 0 -> 80 bytes INIT/CasioROM.mem | Bin 0 -> 1537164 bytes INIT/CasioUserROM.mem | Bin 0 -> 39756 bytes MATRIS.G1A | Bin 29976 -> 29976 bytes Matris.c | 1272 ++++++----- Matris.dlr | 315 +++ Matris.dlw | 265 +++ Matris.g1w | 23 + Matris.rar | Bin 0 -> 24159 bytes MatrisIcon.bmp | Bin 0 -> 206 bytes MatrisSource.c | 1154 ++++++++++ SDCard/SCORE.mat | Bin 0 -> 21 bytes Sprites.h | 884 ++++---- draw.c | 1310 +++++------ draw.h | 28 +- eActivityIcon.bmp | Bin 0 -> 106 bytes global.c | 66 +- global.h | 112 +- key.c | 78 +- key.h | 6 +- matris.rar | Bin 0 -> 24158 bytes src/MATRIS.G1A | Bin 0 -> 29976 bytes src/MainIcon.bmp | Bin 0 -> 138 bytes src/Matris.c | 635 ++++++ src/SYSCALLS.src | 65 + src/Sprites.h | 443 ++++ src/draw.c | 655 ++++++ src/draw.h | 15 + src/global.c | 33 + src/global.h | 57 + src/key.c | 39 + src/key.h | 4 + 52 files changed, 16977 insertions(+), 1879 deletions(-) create mode 100644 AddinInfo.txt create mode 100644 Debug/Addin.mak create mode 100644 Debug/Drawing.lst create mode 100644 Debug/FXADDINror.abs create mode 100644 Debug/FXADDINror.bin create mode 100644 Debug/FXADDINror.dbg create mode 100644 Debug/FXADDINror.fsy create mode 100644 Debug/FXADDINror.map create mode 100644 Debug/FuckinRev.lst create mode 100644 Debug/Matris.lst create mode 100644 Debug/Matris.obj create mode 100644 Debug/SYSCALLS.obj create mode 100644 Debug/draw.lst create mode 100644 Debug/draw.obj create mode 100644 Debug/global.lst create mode 100644 Debug/global.obj create mode 100644 Debug/key.lst create mode 100644 Debug/key.obj create mode 100644 FXSH_Build.bat create mode 100644 INIT/CasioRAM.mem create mode 100644 INIT/CasioRAMCPU.mem create mode 100644 INIT/CasioROM.mem create mode 100644 INIT/CasioUserROM.mem create mode 100644 Matris.dlr create mode 100644 Matris.dlw create mode 100644 Matris.g1w create mode 100644 Matris.rar create mode 100644 MatrisIcon.bmp create mode 100644 MatrisSource.c create mode 100644 SDCard/SCORE.mat create mode 100644 eActivityIcon.bmp create mode 100644 matris.rar create mode 100644 src/MATRIS.G1A create mode 100644 src/MainIcon.bmp create mode 100644 src/Matris.c create mode 100644 src/SYSCALLS.src create mode 100644 src/Sprites.h create mode 100644 src/draw.c create mode 100644 src/draw.h create mode 100644 src/global.c create mode 100644 src/global.h create mode 100644 src/key.c create mode 100644 src/key.h 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 new file mode 100644 index 0000000..bbf4490 Binary files /dev/null and b/Debug/FXADDINror.abs differ diff --git a/Debug/FXADDINror.bin b/Debug/FXADDINror.bin new file mode 100644 index 0000000..48dd1ad Binary files /dev/null and b/Debug/FXADDINror.bin differ diff --git a/Debug/FXADDINror.dbg b/Debug/FXADDINror.dbg new file mode 100644 index 0000000..d3096b1 Binary files /dev/null and b/Debug/FXADDINror.dbg differ 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 new file mode 100644 index 0000000..91ee4c2 Binary files /dev/null and b/Debug/Matris.obj differ diff --git a/Debug/SYSCALLS.obj b/Debug/SYSCALLS.obj new file mode 100644 index 0000000..b870bd9 Binary files /dev/null and b/Debug/SYSCALLS.obj differ 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) + 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) + 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 new file mode 100644 index 0000000..ff9caee Binary files /dev/null and b/Debug/draw.obj differ 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 new file mode 100644 index 0000000..c2dae63 Binary files /dev/null and b/Debug/global.obj differ 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<> 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 new file mode 100644 index 0000000..0a6fa3a Binary files /dev/null and b/Debug/key.obj differ 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 new file mode 100644 index 0000000..665bfc6 Binary files /dev/null and b/INIT/CasioRAM.mem differ diff --git a/INIT/CasioRAMCPU.mem b/INIT/CasioRAMCPU.mem new file mode 100644 index 0000000..fd09ac7 Binary files /dev/null and b/INIT/CasioRAMCPU.mem differ diff --git a/INIT/CasioROM.mem b/INIT/CasioROM.mem new file mode 100644 index 0000000..fdb84e1 Binary files /dev/null and b/INIT/CasioROM.mem differ diff --git a/INIT/CasioUserROM.mem b/INIT/CasioUserROM.mem new file mode 100644 index 0000000..516e252 Binary files /dev/null and b/INIT/CasioUserROM.mem differ diff --git a/MATRIS.G1A b/MATRIS.G1A index 2a12051..2c54587 100644 Binary files a/MATRIS.G1A and b/MATRIS.G1A differ diff --git a/Matris.c b/Matris.c index 37b0ab1..6ba8152 100644 --- a/Matris.c +++ b/Matris.c @@ -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 new file mode 100644 index 0000000..7876f55 Binary files /dev/null and b/Matris.rar differ diff --git a/MatrisIcon.bmp b/MatrisIcon.bmp new file mode 100644 index 0000000..ebd5bcc Binary files /dev/null and b/MatrisIcon.bmp differ 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 +#include + +#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= 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 new file mode 100644 index 0000000..fbe6ec9 Binary files /dev/null and b/SDCard/SCORE.mat differ diff --git a/Sprites.h b/Sprites.h index 1519e99..97b82d8 100644 --- a/Sprites.h +++ b/Sprites.h @@ -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 diff --git a/draw.c b/draw.c index de2d6c5..b136250 100644 --- a/draw.c +++ b/draw.c @@ -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) - { - cumul -= dx; - y += sy; - } - pixel(buffer, x, y, color); - } - } - else - { - cumul = dy / 2; - for(i=1 ; i 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) + { + cumul -= dx; + y += sy; + } + pixel(buffer, x, y, color); + } + } + else + { + cumul = dy / 2; + for(i=1 ; i 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/draw.h b/draw.h index 2a9f9de..1bff871 100644 --- a/draw.h +++ b/draw.h @@ -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 new file mode 100644 index 0000000..104a2c6 Binary files /dev/null and b/eActivityIcon.bmp differ diff --git a/global.c b/global.c index ece274b..650042d 100644 --- a/global.c +++ b/global.c @@ -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 diff --git a/global.h b/global.h index 1447014..f1709b9 100644 --- a/global.h +++ b/global.h @@ -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 diff --git a/key.c b/key.c index 9083fbd..4043749 100644 --- a/key.c +++ b/key.c @@ -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<> 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<> 4 ) == keycode; + } +} + diff --git a/key.h b/key.h index dd4a005..e36212e 100644 --- a/key.h +++ b/key.h @@ -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 new file mode 100644 index 0000000..1374fb1 Binary files /dev/null and b/matris.rar differ diff --git a/src/MATRIS.G1A b/src/MATRIS.G1A new file mode 100644 index 0000000..2c54587 Binary files /dev/null and b/src/MATRIS.G1A differ diff --git a/src/MainIcon.bmp b/src/MainIcon.bmp new file mode 100644 index 0000000..3e72743 Binary files /dev/null and b/src/MainIcon.bmp differ 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) + { + cumul -= dx; + y += sy; + } + pixel(buffer, x, y, color); + } + } + else + { + cumul = dy / 2; + for(i=1 ; i 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<> 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 -- cgit v1.3.1