From 0364ead98bc08ac376706eb013fef8c3c96842c9 Mon Sep 17 00:00:00 2001 From: OctoSpacc Date: Tue, 10 Oct 2023 16:02:15 +0200 Subject: [PATCH] [NDS] Fix console print (but temporarily break SDL), more secure Makefile --- .gitignore | 2 +- LibMultiSpacc/Examples/Common.mk | 18 ++-------- LibMultiSpacc/Examples/HelloWorld/HelloWorld | Bin 159228 -> 0 bytes .../Examples/HelloWorld/HelloWorld.c | 33 +++++++++++++----- LibMultiSpacc/LibMultiSpacc/MultiSpacc.h | 4 +-- LibMultiSpacc/LibMultiSpacc/NDS/NDS.c | 33 ++++++++++++++---- LibMultiSpacc/LibMultiSpacc/NDS/NDS.h | 2 +- LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c | 2 +- 8 files changed, 58 insertions(+), 36 deletions(-) delete mode 100644 LibMultiSpacc/Examples/HelloWorld/HelloWorld diff --git a/.gitignore b/.gitignore index 7cbdd59..37515ed 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,4 @@ *.exe *.run *.tmp -Build/* +Build/ diff --git a/LibMultiSpacc/Examples/Common.mk b/LibMultiSpacc/Examples/Common.mk index 84d5e56..cc6f6ed 100644 --- a/LibMultiSpacc/Examples/Common.mk +++ b/LibMultiSpacc/Examples/Common.mk @@ -51,29 +51,17 @@ Normal: $(Objects) $(CC) $^ $(LdFlags) -o $(AppName)$(ExeSuffix) NDS: - #mkdir -p ./Build/NDS/Examples - #cp -rT . ./Build/NDS/Examples/$(shell basename $(CURDIR)) || true - #rm -rf ./Build/NDS/Examples/$(shell basename $(CURDIR))/Build - #cp -rT ../../LibMultiSpacc ./Build/NDS/LibMultiSpacc - #cp ../NDS.mk ./Build/NDS/Examples/$(shell basename $(CURDIR))/Makefile - #ln -s $(wildcard ../../LibMultiSpacc/*.* ../../LibMultiSpacc/NDS/*.*) ./Build/NDS/Examples/$(shell basename $(CURDIR))/ - #cd ./Build/NDS/Examples/$(shell basename $(CURDIR)); make - #$(eval VirtualBuildDir = ./Build/NDS/$(shell basename $(CURDIR))) - #mkdir -p $(VirtualBuildDir)/source/LibMultiSpacc $(eval VirtualBuildDir = ./Build/NDS) mkdir -p $(VirtualBuildDir)/source/.tmp cp ../NDS.mk $(VirtualBuildDir)/Makefile - #cp $(wildcard *) $(VirtualBuildDir)/source/ - #cp $(Sources) $(wildcard ../../LibMultiSpacc/*.* ../../LibMultiSpacc/NDS/*.*) $(VirtualBuildDir)/source/ cp $(Sources) $(VirtualBuildDir)/source/ cp $(wildcard ../../LibMultiSpacc/*.*) $(VirtualBuildDir)/source/.tmp/ cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_$$i; done cp $(wildcard ../../LibMultiSpacc/NDS/*.*) $(VirtualBuildDir)/source/.tmp/ cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_NDS_$$i; done - #cp -rT ../../LibMultiSpacc $(VirtualBuildDir)/source/LibMultiSpacc - for i in $(VirtualBuildDir)/source/*; do sed -i 's|"../../LibMultiSpacc/|"LibMultiSpacc_|g' $$i; done - for i in $(VirtualBuildDir)/source/*; do sed -i 's|"../MultiSpacc|"LibMultiSpacc_MultiSpacc|g' $$i; done - for i in $(VirtualBuildDir)/source/*; do sed -i 's|"NDS/|"LibMultiSpacc_NDS_|g' $$i; done + for i in $(VirtualBuildDir)/source/*; do sed -i 's|#include[ \t]"../../LibMultiSpacc/|#include "LibMultiSpacc_|g' $$i; done + for i in $(VirtualBuildDir)/source/*; do sed -i 's|#include[ \t]"../MultiSpacc|#include "LibMultiSpacc_MultiSpacc|g' $$i; done + for i in $(VirtualBuildDir)/source/*; do sed -i 's|#include[ \t]"NDS/|#include "LibMultiSpacc_NDS_|g' $$i; done cd $(VirtualBuildDir); make Run run: All diff --git a/LibMultiSpacc/Examples/HelloWorld/HelloWorld b/LibMultiSpacc/Examples/HelloWorld/HelloWorld deleted file mode 100644 index 6d6fe3ab0ebd31cc3318f2c94bb495c0c2745900..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 159228 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%0DN-rL{prTxylH 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 QH{qzsH)$Zsg-GiE0p2*ZbN~PV diff --git a/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c b/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c index 7bdc2e5..6dc98e2 100644 --- a/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c +++ b/LibMultiSpacc/Examples/HelloWorld/HelloWorld.c @@ -2,31 +2,46 @@ #define AppName "Hello World" -int main( int argc, char *args[] ) +//MultiSpacc_Window consoleInnit(MultiSpacc_Window console){ +// consoleSelect(&console); +// PrintConsole *consolePtr = consoleInit(&console, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); +// consoleSelect(&console); +// consoleSelect(consolePtr); +// return *consolePtr; +//return *consoleInit(&Window, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); +//} + +int main( void ) { MultiSpacc_SurfaceConfig WindowConfig = { .Width = 320, .Height = 240, .Bits = 16 }; - MultiSpacc_Window *Window = MultiSpacc_SetWindow( WindowConfig ); - MultiSpacc_Surface *Screen = MultiSpacc_GetWindowSurface( Window ); + MultiSpacc_Window Window = MultiSpacc_SetWindow( WindowConfig ); + MultiSpacc_Surface *Screen = MultiSpacc_GetWindowSurface( &Window ); - if( Screen == NULL ) +/* if( Screen == NULL ) { printf("[E] Error Initializing Video System.\n"); return -1; - }; + };*/ - MultiSpacc_SetAppTitle( Window, AppName ); + //MultiSpacc_SetAppTitle( Window, AppName ); + + //PrintConsole bottomScreen; + //consoleInit(&Window, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); + //Window = consoleInnit(Window); + //consoleSelect(&Window); // Bitmap font borrowed from: // Copyright (c) 2018 Doug Fraker www.nesdoug.com (MIT) //MultiSpacc_Surface *TilesImg = MultiSpacc_LoadImage( "Tiles.png", Screen, NULL ); + MultiSpacc_PrintText( "Hello, World!", NULL, WindowConfig, 4, 4, NULL ); - //MultiSpacc_PrintText( "Hello, World!", Screen, WindowConfig.Width, WindowConfig.Height, 4, 4, TilesImg ); + while(1){ swiWaitForVBlank(); } - if( MultiSpacc_UpdateWindowSurface( Window ) != 0 ) + /*if( MultiSpacc_UpdateWindowSurface( Window ) != 0 ) { printf("[E] Error Updating Screen.\n"); return -1; - }; + };*/ MultiSpacc_Sleep( 3000 ); return 0; diff --git a/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h b/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h index f4e40f7..143c71c 100644 --- a/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h +++ b/LibMultiSpacc/LibMultiSpacc/MultiSpacc.h @@ -25,7 +25,7 @@ typedef struct MultiSpacc_SurfaceConfig { Uint32 Flags; } MultiSpacc_SurfaceConfig; -MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ); +MultiSpacc_Window MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ); MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ); void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ); @@ -36,4 +36,4 @@ int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) int MultiSpacc_PollEvent( MultiSpacc_Event *Event ); -void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ); // WIP +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, MultiSpacc_SurfaceConfig WindowConfig, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ); // WIP diff --git a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c index 4f59263..ba8a94a 100644 --- a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c +++ b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.c @@ -1,15 +1,34 @@ #include "../MultiSpacc.h" -MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) +MultiSpacc_Window MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { - MultiSpacc_Window *wip; - return wip; + //PrintConsole topScreen; + PrintConsole bottomScreen; + //PrintConsole *bottomScreenPtr; + + //videoSetMode(MODE_0_2D); + videoSetModeSub(MODE_0_2D); + + //vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankC(VRAM_C_SUB_BG); + + //consoleInit(&topScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, true, true); + //bottomScreenPtr = consoleInit(&bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); + + //consoleSelect(&bottomScreen); + //return *bottomScreenPtr; + + + PrintConsole *bottomScreenPtr = consoleInit(&bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); + bottomScreen = *bottomScreenPtr; + consoleSelect(&bottomScreen); + return bottomScreen; } MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { - MultiSpacc_Surface *wip; - return wip; + consoleSelect(Window); + return Window; } void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ){} @@ -19,7 +38,7 @@ int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ) return 0; } -void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, MultiSpacc_SurfaceConfig WindowConfig, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) { - + iprintf(Text); } \ No newline at end of file diff --git a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h index 1bbb809..7f3e3bd 100644 --- a/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h +++ b/LibMultiSpacc/LibMultiSpacc/NDS/NDS.h @@ -8,8 +8,8 @@ #include #define Uint32 int32 -#define MultiSpacc_Window PrintConsole #define MultiSpacc_Surface PrintConsole +#define MultiSpacc_Window PrintConsole #define MultiSpacc_Sleep {} typedef struct MultiSpacc_Event { diff --git a/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c b/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c index 72a5207..e02a98e 100644 --- a/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c +++ b/LibMultiSpacc/LibMultiSpacc/SDLCom/SDL.c @@ -32,7 +32,7 @@ MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *S return Final; } -void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, int ScreenWidth, int ScreenHeight, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) +void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, MultiSpacc_SurfaceConfig WindowConfig, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) { for( int i = 0; i < strlen( Text ); i++ ) {