From e8428b0d7eca0d196f83ebd645d3fc2ec2fba189 Mon Sep 17 00:00:00 2001 From: tibz Date: Fri, 15 May 2026 23:23:16 -0500 Subject: [PATCH] moved to different file --- inc/title_screen.h | 13 ++ out/rom.bin | Bin 131072 -> 131072 bytes out/rom.out | Bin 100472 -> 100508 bytes out/src/Main.d | 2 +- out/src/Main.o | Bin 19244 -> 4140 bytes out/src/title_screen.d | 21 +++ out/src/title_screen.o | Bin 0 -> 14604 bytes out/symbol.txt | 345 +++++++++++++++++++++-------------------- src/Main.c | 191 ++--------------------- src/title_screen.c | 116 ++++++++++++++ 10 files changed, 335 insertions(+), 353 deletions(-) create mode 100644 inc/title_screen.h create mode 100644 out/src/title_screen.d create mode 100644 out/src/title_screen.o create mode 100644 src/title_screen.c diff --git a/inc/title_screen.h b/inc/title_screen.h new file mode 100644 index 0000000..bc33acd --- /dev/null +++ b/inc/title_screen.h @@ -0,0 +1,13 @@ +#include + +#ifndef TITLE_SCREEN_H_ +#define TITLE_SCREEN_H_ + +extern Sprite* player_sprite; +extern s16 tile_scroll_array []; +extern void init_title_screen(); +extern void update_title_screen(); +extern void draw_title_screen(); + + +#endif // TITLE_SCREEN_H \ No newline at end of file diff --git a/out/rom.bin b/out/rom.bin index 704347f5c816f0220e8a94ba82de18345c7479bd..363b4cfede5c74bd6ad809a7796fc188bb94f3b0 100644 GIT binary patch delta 9321 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 R=m8@Cahio(_;-Xw{x3)ZD8K*! delta 9300 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 *&q*)#eK`v#nM-l?<2`}|=LPr) zlPrO)X~0o%$xCWA=loy9B`@}WvE2?%iU#oDQFerLdudP#m}8f2CjIlD);0K(Hs@~7lO`jSeRjE`=Kk?!B~{F+8BXhTus?-kc+@T?5S ztQ0jEiT9rEjTI1sr;`-4jv6@|=>p#@iwq%F!SI9cF~GEePMEq(dxNO_=<-%z_1jEx28>V8N7vK^Alyrx+n~StVrQlbwqM1$H^0)&}du z&U_wBEcJ7P;)WW@$Aml)gN&J+!;4?ne8$cG9;&~=Z*oPz!_P?_)^GPQ~h#Cww z$>xtGMVpUjyfeMUy%7@>^4*4_5R4ZNSFU z;T&XjG5$}4|KUB{OH=m7V>M#g8|^j>H|vKJI4cYPhdF|Mx;9iR@DqNQZYw{-7%ist zmSUq$=rm`+%il}?6zykYOZ8r))0N2oS=F&TDR+fy@xK2fPu5w0z&}VFvYvf~vdd+i zumLYxn|k&Zi^AJEbPhd;UDI{?TF8i#n8fh+^WLWNpDzw-{L83!N$}sr>&T6Np`KsJ F{|8217bpM# diff --git a/out/rom.out b/out/rom.out index 174e07114bdd5a3c1b3a96dd35924367c6cd01fd..3e188e6b8e707019bf5338be68e55c5bd07e672a 100644 GIT binary patch delta 13598 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 diff --git a/out/src/Main.d b/out/src/Main.d index 11ce48e..e9ae6d6 100644 --- a/out/src/Main.d +++ b/out/src/Main.d @@ -17,4 +17,4 @@ out/src/Main.o: src/Main.c c:/SGDK/inc/genesis.h c:/SGDK/inc/types.h \ c:/SGDK/inc/task_cst.h c:/SGDK/inc/ext/flash-save/flash.h \ c:/SGDK/inc/types.h c:/SGDK/inc/ext/flash-save/saveman.h \ c:/SGDK/inc/ext/console.h c:/SGDK/inc/config.h c:/SGDK/inc/string.h \ - c:/SGDK/inc/maths.h c:/SGDK/inc/dma.h res/resources.h + c:/SGDK/inc/maths.h c:/SGDK/inc/dma.h res/resources.h inc/title_screen.h diff --git a/out/src/Main.o b/out/src/Main.o index fadc1f61b3c9837e5a4163b9719c114f880f9187..2abad2cec67ebc294fa303b414764984edb66421 100644 GIT binary patch literal 4140 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 bZ6OI?AYV`c@Bf`VaWfF=;w;-0j`#ln2*B=5 literal 0 HcmV?d00001 diff --git a/out/symbol.txt b/out/symbol.txt index b29e6b6..81b4237 100644 --- a/out/symbol.txt +++ b/out/symbol.txt @@ -4,7 +4,7 @@ 00000020 a bigTex1_palette_data_size 00000020 a font_pal_default_data_size 00000020 a sgdk_logo_palette_data_size -00000044 A _sdata +00000048 A _sdata 00000080 a bg1_palette_data_size 00000080 a bgtest_palette_data_size 000000ac A stop_xgm_size @@ -450,78 +450,78 @@ 0000846e t internal_reset 000085b4 t VDP_drawImageEx.constprop.0.isra.0 000086fc t main.isra.0 -00008c04 T _start_entry -00008cca T _reset_entry -00008cd2 T XGM_doVBlankProcess -00008d38 T MDDBG__SymbolDataPtr -00008d3c t __ErrorHandler -00008d3c t MDDBG__ErrorHandler -00008e64 t MDDBG__Error_IdleLoop -00008e7e t MDDBG__Error_InitConsole -00008e8a t MDDBG__Error_MaskStackBoundaries -00008ef4 t MDDBG__Error_DrawOffsetLocation -00008ef8 t MDDBG__Error_DrawOffsetLocation2 -00008efe t MDDBG__Error_DrawOffsetLocation__inj -00008f8c t MDDBG__ErrorHandler_SetupVDP -00008fc2 t MDDBG__ErrorHandler_VDPConfig -00008fd8 t MDDBG__ErrorHandler_VDPConfig_Nametables -00009014 t MDDBG__ErrorHandler_ConsoleConfig_Initial -00009018 t MDDBG__ErrorHandler_ConsoleConfig_Shared -00009048 t MDDBG__Str_OffsetLocation_24bit -00009051 t MDDBG__Str_OffsetLocation_32bit -0000908c t MDDBG__Art1bpp_Font -00009386 t MDDBG__GetSymbolByOffset -000096a0 t MDDBG__FormatString -0000977a t MDDBG__Console_Init -000097b8 t MDDBG__Console_Reset -000097ba t MDDBG__Console_InitShared -00009804 t MDDBG__Console_SetPosAsXY_Stack -0000980a t MDDBG__Console_SetPosAsXY -0000983e t MDDBG__Console_GetPosAsXY -00009864 t MDDBG__Console_StartNewLine -00009892 t MDDBG__Console_SetBasePattern -000098ae t MDDBG__Console_SetWidth -000098cc t MDDBG__Console_WriteLine_WithPattern -000098ce t MDDBG__Console_WriteLine -000098d2 t MDDBG__Console_Write -00009998 t MDDBG__Console_WriteLine_Formatted -0000999c t MDDBG__Console_Write_Formatted -000099cc t MDDBG__Decomp1bpp -000099e8 t MDDBG__KDebug_WriteLine_Formatted -000099ec t MDDBG__KDebug_Write_Formatted -00009a40 t MDDBG__KDebug_FlushLine -00009a4a t MDDBG__KDebug_WriteLine -00009a4e t MDDBG__KDebug_Write -00009a7c t MDDBG__ErrorHandler_ConsoleOnly -00009aa2 t MDDBG__ErrorHandler_ClearConsole -00009acc t MDDBG__ErrorHandler_PauseConsole -00009b06 t MDDBG__ErrorHandler_PagesController -00009b66 t MDDBG__VSync -00009ba0 t MDDBG__ErrorHandler_ExtraDebuggerList -00009bac t MDDBG__Debugger_AddressRegisters -00009bf8 t MDDBG__Debugger_Backtrace -00009c96 T _Bus_Error -00009c96 t MDDBG__BusError -00009caa T _Address_Error -00009caa t MDDBG__AddressError -00009cc2 T _Illegal_Instruction -00009cc2 t MDDBG__IllegalInstr -00009ce0 T _Zero_Divide -00009ce0 t MDDBG__ZeroDivide -00009cf6 T _Chk_Instruction -00009cf6 t MDDBG__ChkInstr -00009d10 T _Trapv_Instruction -00009d10 t MDDBG__TrapvInstr -00009d2c T _Privilege_Violation -00009d2c t MDDBG__PrivilegeViol -00009d4a T _Trace -00009d4a t MDDBG__Trace -00009d5a T _Line_1010_Emulation -00009d5a t MDDBG__Line1010Emu -00009d76 T _Line_1111_Emulation -00009d76 t MDDBG__Line1111Emu -00009d92 T _Error_Exception -00009d92 t MDDBG__ErrorExcept +00008bba T _start_entry +00008c80 T _reset_entry +00008c88 T XGM_doVBlankProcess +00008cf0 T MDDBG__SymbolDataPtr +00008cf4 t __ErrorHandler +00008cf4 t MDDBG__ErrorHandler +00008e1c t MDDBG__Error_IdleLoop +00008e36 t MDDBG__Error_InitConsole +00008e42 t MDDBG__Error_MaskStackBoundaries +00008eac t MDDBG__Error_DrawOffsetLocation +00008eb0 t MDDBG__Error_DrawOffsetLocation2 +00008eb6 t MDDBG__Error_DrawOffsetLocation__inj +00008f44 t MDDBG__ErrorHandler_SetupVDP +00008f7a t MDDBG__ErrorHandler_VDPConfig +00008f90 t MDDBG__ErrorHandler_VDPConfig_Nametables +00008fcc t MDDBG__ErrorHandler_ConsoleConfig_Initial +00008fd0 t MDDBG__ErrorHandler_ConsoleConfig_Shared +00009000 t MDDBG__Str_OffsetLocation_24bit +00009009 t MDDBG__Str_OffsetLocation_32bit +00009044 t MDDBG__Art1bpp_Font +0000933e t MDDBG__GetSymbolByOffset +00009658 t MDDBG__FormatString +00009732 t MDDBG__Console_Init +00009770 t MDDBG__Console_Reset +00009772 t MDDBG__Console_InitShared +000097bc t MDDBG__Console_SetPosAsXY_Stack +000097c2 t MDDBG__Console_SetPosAsXY +000097f6 t MDDBG__Console_GetPosAsXY +0000981c t MDDBG__Console_StartNewLine +0000984a t MDDBG__Console_SetBasePattern +00009866 t MDDBG__Console_SetWidth +00009884 t MDDBG__Console_WriteLine_WithPattern +00009886 t MDDBG__Console_WriteLine +0000988a t MDDBG__Console_Write +00009950 t MDDBG__Console_WriteLine_Formatted +00009954 t MDDBG__Console_Write_Formatted +00009984 t MDDBG__Decomp1bpp +000099a0 t MDDBG__KDebug_WriteLine_Formatted +000099a4 t MDDBG__KDebug_Write_Formatted +000099f8 t MDDBG__KDebug_FlushLine +00009a02 t MDDBG__KDebug_WriteLine +00009a06 t MDDBG__KDebug_Write +00009a34 t MDDBG__ErrorHandler_ConsoleOnly +00009a5a t MDDBG__ErrorHandler_ClearConsole +00009a84 t MDDBG__ErrorHandler_PauseConsole +00009abe t MDDBG__ErrorHandler_PagesController +00009b1e t MDDBG__VSync +00009b58 t MDDBG__ErrorHandler_ExtraDebuggerList +00009b64 t MDDBG__Debugger_AddressRegisters +00009bb0 t MDDBG__Debugger_Backtrace +00009c4e T _Bus_Error +00009c4e t MDDBG__BusError +00009c62 T _Address_Error +00009c62 t MDDBG__AddressError +00009c7a T _Illegal_Instruction +00009c7a t MDDBG__IllegalInstr +00009c98 T _Zero_Divide +00009c98 t MDDBG__ZeroDivide +00009cae T _Chk_Instruction +00009cae t MDDBG__ChkInstr +00009cc8 T _Trapv_Instruction +00009cc8 t MDDBG__TrapvInstr +00009ce4 T _Privilege_Violation +00009ce4 t MDDBG__PrivilegeViol +00009d02 T _Trace +00009d02 t MDDBG__Trace +00009d12 T _Line_1010_Emulation +00009d12 t MDDBG__Line1010Emu +00009d2e T _Line_1111_Emulation +00009d2e t MDDBG__Line1111Emu +00009d4a T _Error_Exception +00009d4a t MDDBG__ErrorExcept 00009e00 T smp_null 00009f00 T smp_null_dpcm 00009f80 T __mulsi3 /home/runner/work/m68k-elf-gcc/m68k-elf-gcc/.build/HOST-i686-w64-mingw32/m68k-elf/src/gcc/libgcc/config/m68k/lb1sf68.S:442 @@ -587,103 +587,104 @@ 0001274c t bg1_tileset_data 00012b70 t fg1_tileset_data 00013018 A _stext -e0ff0000 D task_sr -e0ff0002 D task_pc -e0ff0006 D task_regs -e0ff0042 D task_lock -e0ff0044 D _edata -e0ff0044 B _start -e0ff0044 B bmp_buffer_write -e0ff0048 B VBlankProcess -e0ff004a B hintCaller -e0ff0050 B vintCB -e0ff0054 B intCB -e0ff0058 B vtimer -e0ff005c B eintCB -e0ff0060 B intLevelSave -e0ff0062 B intTrace -e0ff0064 B dmaQueues -e0ff0068 b state -e0ff006a b tile_scroll_array -e0ff00a2 b scrollFrameDelayHalved -e0ff00a6 b scrollFrameDelay -e0ff00aa b player_hflip -e0ff00ac b player -e0ff00b0 b player_y -e0ff00b4 b player_x -e0ff00b8 b vscroll_update -e0ff00b9 b hscroll_update -e0ff00ba b fadePSGVol -e0ff00bc b fadeFMVol -e0ff00be b fadeCount -e0ff00c0 b usedVDPSprite -e0ff00c2 b xgm2WaitTab -e0ff00ca b xgm2IdleTab -e0ff00d2 b xgmTempoCnt -e0ff00d4 b xgmWaitTab -e0ff0114 b xgmIdleTab -e0ff0154 b xgmTempoDef -e0ff0156 b xgmTempo -e0ff0158 b busProtectSignalAddress -e0ff015a b driverFlags -e0ff015c b currentDriver -e0ff015e b allocStack -e0ff029e b lastVTimer.0 -e0ff02a0 b text_plan -e0ff02a4 b text_basetile -e0ff02a6 b lastVCnt -e0ff02a8 b windowWidthSft -e0ff02aa b planeWidthSft -e0ff02ac b windowWidth -e0ff02ae b planeHeight -e0ff02b0 b planeWidth -e0ff02b2 b hscrl_addr -e0ff02b4 b bgb_addr -e0ff02b6 b bga_addr -e0ff02b8 b window_addr -e0ff02ba b lastTick -e0ff02be b cpuFrameLoad -e0ff02c0 b frameLoadIndex -e0ff02c2 b frameLoads -e0ff02d2 b vblankCB -e0ff02d6 b flags -e0ff02d8 b screenHeight -e0ff02da b screenWidth -e0ff02dc b maps_addr -e0ff02de b slist_addr -e0ff02e0 b vdpSpriteCache -e0ff05e0 b spriteVramSize -e0ff05e4 b vram -e0ff05f0 b lastSprite -e0ff05f4 b firstSprite -e0ff05f8 b spritesPool -e0ff05fc b fadeCounter -e0ff05fe b heap -e0ff0602 b free.lto_priv.0 -e0ff0606 b randomSeedSet -e0ff0608 b joyEventCB -e0ff060c b retry -e0ff060d b phase.lto_priv.1 -e0ff0610 b regValues -e0ff0623 b gun -e0ff0624 b extSet -e0ff0626 b disableIntStack -e0ff0628 b joyAxisY -e0ff0638 b joyAxisX -e0ff0648 b joyState -e0ff0658 b joyType -e0ff0660 b portSupport -e0ff0662 b portType -e0ff0664 b gport -e0ff0666 b flag -e0ff0668 b maxTransferPerFrame -e0ff066a b queueSize -e0ff066c b nextDataBuffer -e0ff0670 b queueTransferSize -e0ff0672 b queueIndexLimit -e0ff0674 b queueIndex -e0ff0676 b dmaDataBuffer -e0ff067a b dataBufferSize -e0ff067c b phase.lto_priv.0 -e0ff067e B _bend +e0ff0000 d ind +e0ff0004 D task_sr +e0ff0006 D task_pc +e0ff000a D task_regs +e0ff0046 D task_lock +e0ff0048 D _edata +e0ff0048 B _start +e0ff0048 B bmp_buffer_write +e0ff004c B VBlankProcess +e0ff004e B hintCaller +e0ff0054 B vintCB +e0ff0058 B intCB +e0ff005c B vtimer +e0ff0060 B eintCB +e0ff0064 B intLevelSave +e0ff0066 B intTrace +e0ff0068 B dmaQueues +e0ff006c b state +e0ff006e b player_hflip +e0ff0070 b tile_scroll_array +e0ff00a8 b scrollFrameDelayHalved +e0ff00ac b scrollFrameDelay +e0ff00b0 b player_sprite +e0ff00b4 b player_y +e0ff00b8 b player_x +e0ff00bc b vscroll_update +e0ff00bd b hscroll_update +e0ff00be b fadePSGVol +e0ff00c0 b fadeFMVol +e0ff00c2 b fadeCount +e0ff00c4 b usedVDPSprite +e0ff00c6 b xgm2WaitTab +e0ff00ce b xgm2IdleTab +e0ff00d6 b xgmTempoCnt +e0ff00d8 b xgmWaitTab +e0ff0118 b xgmIdleTab +e0ff0158 b xgmTempoDef +e0ff015a b xgmTempo +e0ff015c b busProtectSignalAddress +e0ff015e b driverFlags +e0ff0160 b currentDriver +e0ff0162 b allocStack +e0ff02a2 b lastVTimer.0 +e0ff02a4 b text_plan +e0ff02a8 b text_basetile +e0ff02aa b lastVCnt +e0ff02ac b windowWidthSft +e0ff02ae b planeWidthSft +e0ff02b0 b windowWidth +e0ff02b2 b planeHeight +e0ff02b4 b planeWidth +e0ff02b6 b hscrl_addr +e0ff02b8 b bgb_addr +e0ff02ba b bga_addr +e0ff02bc b window_addr +e0ff02be b lastTick +e0ff02c2 b cpuFrameLoad +e0ff02c4 b frameLoadIndex +e0ff02c6 b frameLoads +e0ff02d6 b vblankCB +e0ff02da b flags +e0ff02dc b screenHeight +e0ff02de b screenWidth +e0ff02e0 b maps_addr +e0ff02e2 b slist_addr +e0ff02e4 b vdpSpriteCache +e0ff05e4 b spriteVramSize +e0ff05e8 b vram +e0ff05f4 b lastSprite +e0ff05f8 b firstSprite +e0ff05fc b spritesPool +e0ff0600 b fadeCounter +e0ff0602 b heap +e0ff0606 b free.lto_priv.0 +e0ff060a b randomSeedSet +e0ff060c b joyEventCB +e0ff0610 b retry +e0ff0611 b phase.lto_priv.1 +e0ff0614 b regValues +e0ff0627 b gun +e0ff0628 b extSet +e0ff062a b disableIntStack +e0ff062c b joyAxisY +e0ff063c b joyAxisX +e0ff064c b joyState +e0ff065c b joyType +e0ff0664 b portSupport +e0ff0666 b portType +e0ff0668 b gport +e0ff066a b flag +e0ff066c b maxTransferPerFrame +e0ff066e b queueSize +e0ff0670 b nextDataBuffer +e0ff0674 b queueTransferSize +e0ff0676 b queueIndexLimit +e0ff0678 b queueIndex +e0ff067a b dmaDataBuffer +e0ff067e b dataBufferSize +e0ff0680 b phase.lto_priv.0 +e0ff0682 B _bend e1000000 A __stack diff --git a/src/Main.c b/src/Main.c index 38e2578..e02fa68 100644 --- a/src/Main.c +++ b/src/Main.c @@ -1,161 +1,31 @@ #include #include +#include "title_screen.h" -char debugString[80]; -char* buttonString; -char* clearString = " "; -Sprite* player; -int player_x; -int player_y; -bool player_hflip; - - -int scrollFrameDelay = 0; -int scrollFrameDelayHalved = 0; - -s16 tile_scroll_array [28] = { - 0,0,0,0,0, - 0,0,0,0,0, - 0,0,0,0,0, - 0,0,0,0,0, - 0,0,0,0,0, - 0,0,0 -}; - - - -void myJoyHandler( u16 joy, u16 changed, u16 state) -{ - strcpy(debugString, ""); - if (joy == JOY_1) - { - - if (JOY_getJoypadType(JOY_1) == JOY_TYPE_PAD6 ) - { - buttonString = "6 Button Connected"; - } - else if (JOY_getJoypadType(JOY_1) == JOY_TYPE_PAD3) - { - buttonString = "3 Button Connected"; - } - else - { - buttonString = "Controller Not Found"; - } - - - if (state & BUTTON_START) - { - strcat(debugString, " Start "); - } - if (state & BUTTON_A) - { - strcat(debugString, " A "); - } - if (state & BUTTON_B) - { - strcat(debugString, " B "); - } - if (state & BUTTON_C) - { - strcat(debugString, " C "); - - } - - if(state & BUTTON_X){ - strcat(debugString, " X "); - } - - if(state & BUTTON_Y){ - strcat(debugString, " Y "); - } - - if(state & BUTTON_Z){ - strcat(debugString, " Z "); - } - - - if(state & BUTTON_DOWN){ - player_y += 1; - } - - if(state & BUTTON_UP){ - player_y -= 1; - } - - if(state & BUTTON_LEFT){ - player_x -= 1; - player_hflip = false; - } - if(state & BUTTON_RIGHT){ - player_x += 1; - player_hflip = true; - } - if ((strlen(debugString) == 0)){ - strcpy(debugString, "None"); - } - - } -} - -static void handleInputs(){ - u16 value = JOY_readJoypad(JOY_1); - if (value & BUTTON_RIGHT){ - player_x += 1; - player_hflip = true; - } - if (value & BUTTON_LEFT){ - player_x -= 1; - player_hflip = false; - } - if (value & BUTTON_UP){ - player_y -= 1; - } - if (value & BUTTON_DOWN){ - player_y += 1; - } -} int main(bool hard) { - player_x = 50; - player_y = 50; + JOY_init(); //JOY_setEventHandler( &myJoyHandler); - u16 ind = TILE_USER_INDEX; - - - SPR_init(); - - PAL_setPalette(PAL0, bg1.palette->data, DMA); - PAL_setPalette(PAL1,fg1.palette->data,DMA); - PAL_setPalette(PAL2, bigTex1.palette->data, DMA); - player = SPR_addSprite(&bigTex1, 0,0, TILE_ATTR(PAL2,false,false,false)); - - VDP_drawImageEx(BG_B, &bg1,TILE_ATTR_FULL(PAL0, false, false, false, ind), 0, -4, false, true); - ind += bg1.tileset->numTile; - - VDP_drawImageEx(BG_A, &fg1,TILE_ATTR_FULL(PAL1, false, false, false, ind), 0, -4, false, true); - ind += fg1.tileset->numTile; - - VDP_setScrollingMode(HSCROLL_TILE,VSCROLL_PLANE); - - - + init_title_screen(); while(TRUE) { - handleInputs(); + //VDP_drawImageEx(BG_B, &bg1,TILE_ATTR_FULL(PAL0, false, false, false, ind), 0, 0, false, true); - SPR_setPosition(player, player_x,player_y); - SPR_setHFlip(player, player_hflip); - SPR_update(); + + update_title_screen(); + + draw_title_screen(); + + // read input // move sprite @@ -163,46 +33,7 @@ int main(bool hard) // draw current screen (logo, start screen, settings, game, gameover, credits...) - if (scrollFrameDelay > 1){ - scrollFrameDelay = 0; - - - if (scrollFrameDelayHalved >1){ - //0.25 scroll speed - tile_scroll_array[15] -=1; - tile_scroll_array[16] -=1; - tile_scroll_array[17] -=1; - tile_scroll_array[18] -=1; - tile_scroll_array[19] -=1; - //reset this timer - scrollFrameDelayHalved = 0; - } - - // 0.5 scroll speed - tile_scroll_array[20] -=1; - - - // effectively 1.5 scroll speed. - tile_scroll_array[22] -=1; - // 2.5 - tile_scroll_array[25] -=1; - - scrollFrameDelayHalved ++; - } - - tile_scroll_array[21] -=1; - tile_scroll_array[22] -=1; //1.5 - tile_scroll_array[23] -=2; - tile_scroll_array[24] -=2; - tile_scroll_array[25] -=2; // 2.5 - tile_scroll_array[26] -=3; - tile_scroll_array[27] -=3; - - VDP_setHorizontalScrollTile(BG_A, 0, tile_scroll_array, 28, DMA_QUEUE); - scrollFrameDelay ++; - - - + // wait for screen refresh and do all SGDK VBlank tasks SYS_doVBlankProcess(); diff --git a/src/title_screen.c b/src/title_screen.c new file mode 100644 index 0000000..19e9310 --- /dev/null +++ b/src/title_screen.c @@ -0,0 +1,116 @@ +#include +#include +#include "title_screen.h" + + +u16 ind = TILE_USER_INDEX; + +Sprite* player_sprite; +int player_x; +int player_y; + +int scrollFrameDelay = 0; +int scrollFrameDelayHalved = 0; + +bool player_hflip; + + +s16 tile_scroll_array [28] = { + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0,0,0, + 0,0,0 +}; + +extern void init_title_screen () { + player_x = 50; + player_y = 50; + + SPR_init(); + + PAL_setPalette(PAL0, bg1.palette->data, DMA); + PAL_setPalette(PAL1,fg1.palette->data,DMA); + PAL_setPalette(PAL2, bigTex1.palette->data, DMA); + player_sprite = SPR_addSprite(&bigTex1, 0,0, TILE_ATTR(PAL2,false,false,false)); + + VDP_drawImageEx(BG_B, &bg1,TILE_ATTR_FULL(PAL0, false, false, false, ind), 0, -4, false, true); + ind += bg1.tileset->numTile; + + VDP_drawImageEx(BG_A, &fg1,TILE_ATTR_FULL(PAL1, false, false, false, ind), 0, -4, false, true); + ind += fg1.tileset->numTile; + + VDP_setScrollingMode(HSCROLL_TILE,VSCROLL_PLANE); +} + +static void handleInputs(){ + u16 value = JOY_readJoypad(JOY_1); + if (value & BUTTON_RIGHT){ + player_x += 1; + player_hflip = true; + } + if (value & BUTTON_LEFT){ + player_x -= 1; + player_hflip = false; + } + if (value & BUTTON_UP){ + player_y -= 1; + } + if (value & BUTTON_DOWN){ + player_y += 1; + } +} + + +extern void update_title_screen(){ + + if (scrollFrameDelay > 1){ + scrollFrameDelay = 0; + + + if (scrollFrameDelayHalved >1){ + //0.25 scroll speed + tile_scroll_array[15] -=1; + tile_scroll_array[16] -=1; + tile_scroll_array[17] -=1; + tile_scroll_array[18] -=1; + tile_scroll_array[19] -=1; + //reset this timer + scrollFrameDelayHalved = 0; + } + + // 0.5 scroll speed + tile_scroll_array[20] -=1; + + + // effectively 1.5 scroll speed. + tile_scroll_array[22] -=1; + // 2.5 + tile_scroll_array[25] -=1; + + scrollFrameDelayHalved ++; + } + + tile_scroll_array[21] -=1; + tile_scroll_array[22] -=1; //1.5 + tile_scroll_array[23] -=2; + tile_scroll_array[24] -=2; + tile_scroll_array[25] -=2; // 2.5 + tile_scroll_array[26] -=3; + tile_scroll_array[27] -=3; + + VDP_setHorizontalScrollTile(BG_A, 0, tile_scroll_array, 28, DMA_QUEUE); + scrollFrameDelay ++; + + + + handleInputs(); +} + +extern void draw_title_screen(){ + + SPR_setPosition(player_sprite, player_x,player_y); + SPR_setHFlip(player_sprite, player_hflip); + SPR_update(); +} \ No newline at end of file