From d1e7a2e605e4e1a530bd5b79c1c0af5945726a96 Mon Sep 17 00:00:00 2001 From: tibz Date: Wed, 13 May 2026 00:28:13 -0500 Subject: [PATCH] added more speeds to paralax scrolling layer --- out/rom.bin | Bin 131072 -> 131072 bytes out/rom.out | Bin 100432 -> 100472 bytes out/src/Main.o | Bin 18664 -> 19244 bytes out/symbol.txt | 175 +++++++++++++++++++++++++------------------------ src/Main.c | 37 ++++++++--- 5 files changed, 116 insertions(+), 96 deletions(-) diff --git a/out/rom.bin b/out/rom.bin index 8c49682ec41c6fb38f56b60a97d1a36be8997ca7..704347f5c816f0220e8a94ba82de18345c7479bd 100644 GIT binary patch delta 1675 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 diff --git a/out/rom.out b/out/rom.out index af6b65e7af960f1814614ca16ad90a74ebcfc230..174e07114bdd5a3c1b3a96dd35924367c6cd01fd 100644 GIT binary patch delta 4940 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 XQBg--m%EMGrlO$4FX;G#IS~B|ERwJE diff --git a/out/src/Main.o b/out/src/Main.o index bdfa3a84b4ea2965421fa4ba04b47cc47bf58c9a..fadc1f61b3c9837e5a4163b9719c114f880f9187 100644 GIT binary patch delta 13518 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 delta 12830 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 VfFCH)5sQI$GlJta_*;I>@PEKCUfTcw diff --git a/out/symbol.txt b/out/symbol.txt index dc54a45..b29e6b6 100644 --- a/out/symbol.txt +++ b/out/symbol.txt @@ -450,78 +450,78 @@ 0000846e t internal_reset 000085b4 t VDP_drawImageEx.constprop.0.isra.0 000086fc t main.isra.0 -00008b70 T _start_entry -00008c36 T _reset_entry -00008c3e T XGM_doVBlankProcess -00008ca4 T MDDBG__SymbolDataPtr -00008ca8 t __ErrorHandler -00008ca8 t MDDBG__ErrorHandler -00008dd0 t MDDBG__Error_IdleLoop -00008dea t MDDBG__Error_InitConsole -00008df6 t MDDBG__Error_MaskStackBoundaries -00008e60 t MDDBG__Error_DrawOffsetLocation -00008e64 t MDDBG__Error_DrawOffsetLocation2 -00008e6a t MDDBG__Error_DrawOffsetLocation__inj -00008ef8 t MDDBG__ErrorHandler_SetupVDP -00008f2e t MDDBG__ErrorHandler_VDPConfig -00008f44 t MDDBG__ErrorHandler_VDPConfig_Nametables -00008f80 t MDDBG__ErrorHandler_ConsoleConfig_Initial -00008f84 t MDDBG__ErrorHandler_ConsoleConfig_Shared -00008fb4 t MDDBG__Str_OffsetLocation_24bit -00008fbd t MDDBG__Str_OffsetLocation_32bit -00008ff8 t MDDBG__Art1bpp_Font -000092f2 t MDDBG__GetSymbolByOffset -0000960c t MDDBG__FormatString -000096e6 t MDDBG__Console_Init -00009724 t MDDBG__Console_Reset -00009726 t MDDBG__Console_InitShared -00009770 t MDDBG__Console_SetPosAsXY_Stack -00009776 t MDDBG__Console_SetPosAsXY -000097aa t MDDBG__Console_GetPosAsXY -000097d0 t MDDBG__Console_StartNewLine -000097fe t MDDBG__Console_SetBasePattern -0000981a t MDDBG__Console_SetWidth -00009838 t MDDBG__Console_WriteLine_WithPattern -0000983a t MDDBG__Console_WriteLine -0000983e t MDDBG__Console_Write -00009904 t MDDBG__Console_WriteLine_Formatted -00009908 t MDDBG__Console_Write_Formatted -00009938 t MDDBG__Decomp1bpp -00009954 t MDDBG__KDebug_WriteLine_Formatted -00009958 t MDDBG__KDebug_Write_Formatted -000099ac t MDDBG__KDebug_FlushLine -000099b6 t MDDBG__KDebug_WriteLine -000099ba t MDDBG__KDebug_Write -000099e8 t MDDBG__ErrorHandler_ConsoleOnly -00009a0e t MDDBG__ErrorHandler_ClearConsole -00009a38 t MDDBG__ErrorHandler_PauseConsole -00009a72 t MDDBG__ErrorHandler_PagesController -00009ad2 t MDDBG__VSync -00009b0c t MDDBG__ErrorHandler_ExtraDebuggerList -00009b18 t MDDBG__Debugger_AddressRegisters -00009b64 t MDDBG__Debugger_Backtrace -00009c02 T _Bus_Error -00009c02 t MDDBG__BusError -00009c16 T _Address_Error -00009c16 t MDDBG__AddressError -00009c2e T _Illegal_Instruction -00009c2e t MDDBG__IllegalInstr -00009c4c T _Zero_Divide -00009c4c t MDDBG__ZeroDivide -00009c62 T _Chk_Instruction -00009c62 t MDDBG__ChkInstr -00009c7c T _Trapv_Instruction -00009c7c t MDDBG__TrapvInstr -00009c98 T _Privilege_Violation -00009c98 t MDDBG__PrivilegeViol -00009cb6 T _Trace -00009cb6 t MDDBG__Trace -00009cc6 T _Line_1010_Emulation -00009cc6 t MDDBG__Line1010Emu -00009ce2 T _Line_1111_Emulation -00009ce2 t MDDBG__Line1111Emu -00009cfe T _Error_Exception -00009cfe t MDDBG__ErrorExcept +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 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 @@ -604,21 +604,22 @@ e0ff0060 B intLevelSave e0ff0062 B intTrace e0ff0064 B dmaQueues e0ff0068 b state -e0ff006c b tile_scroll_array -e0ff00a4 b scrollFrameDelay -e0ff00a8 b player_hflip -e0ff00aa b player -e0ff00ae b player_y -e0ff00b2 b player_x -e0ff00b6 b vscroll_update -e0ff00b7 b hscroll_update -e0ff00b8 b fadePSGVol -e0ff00ba b fadeFMVol -e0ff00bc b fadeCount -e0ff00be b usedVDPSprite -e0ff00c0 b xgm2WaitTab -e0ff00c8 b xgm2IdleTab -e0ff00d0 b xgmTempoCnt +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 diff --git a/src/Main.c b/src/Main.c index e8b2ff2..38e2578 100644 --- a/src/Main.c +++ b/src/Main.c @@ -11,6 +11,7 @@ bool player_hflip; int scrollFrameDelay = 0; +int scrollFrameDelayHalved = 0; s16 tile_scroll_array [28] = { 0,0,0,0,0, @@ -164,24 +165,42 @@ int main(bool hard) if (scrollFrameDelay > 1){ scrollFrameDelay = 0; - 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; - + + + 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[20] -=1; + tile_scroll_array[21] -=1; - tile_scroll_array[22] -=2; + tile_scroll_array[22] -=1; //1.5 tile_scroll_array[23] -=2; tile_scroll_array[24] -=2; - tile_scroll_array[25] -=3; + 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 ++; +