mirror of
				https://gitlab.com/octospacc/MultiSpaccSDK
				synced 2025-06-05 22:09:21 +02:00 
			
		
		
		
	Restructure code in preparation for function-based hierarchy
This commit is contained in:
		| @@ -2,6 +2,7 @@ AppName = $(notdir ${CURDIR}) | |||||||
| Sources = $(wildcard *.c ../../LibMultiSpacc/*.c) | Sources = $(wildcard *.c ../../LibMultiSpacc/*.c) | ||||||
| CFlags = -O2 -Wpedantic -Werror | CFlags = -O2 -Wpedantic -Werror | ||||||
|  |  | ||||||
|  | # Default build is always for the host system | ||||||
| ifndef Target | ifndef Target | ||||||
| 	ifeq ($(shell uname --operating-system), Msys) | 	ifeq ($(shell uname --operating-system), Msys) | ||||||
| 		Target = WindowsPC | 		Target = WindowsPC | ||||||
| @@ -26,16 +27,16 @@ ifdef Target | |||||||
| endif | endif | ||||||
|  |  | ||||||
| ifeq ($(MultiSpacc_Target), SDL12) | ifeq ($(MultiSpacc_Target), SDL12) | ||||||
| 	Defines += -DMultiSpacc_Target_SDL12 | 	Defines += -DMultiSpacc_Target_SDL12 -DMultiSpacc_Target_SDLCom | ||||||
| 	CFlags += $(shell sdl-config --cflags) | 	CFlags += $(shell sdl-config --cflags) | ||||||
| 	LdFlags += $(shell sdl-config --libs) -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf | 	LdFlags += $(shell sdl-config --libs) -lSDL -lSDL_image -lSDL_mixer -lSDL_ttf | ||||||
| 	Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL12/*.c) | 	#Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL12/*.c) | ||||||
| 	BuildProcess = Normal | 	BuildProcess = Normal | ||||||
| else ifeq ($(MultiSpacc_Target), SDL20) | else ifeq ($(MultiSpacc_Target), SDL20) | ||||||
| 	Defines += -DMultiSpacc_Target_SDL20 | 	Defines += -DMultiSpacc_Target_SDL20 -DMultiSpacc_Target_SDLCom | ||||||
| 	CFlags += $(shell sdl2-config --cflags) | 	CFlags += $(shell sdl2-config --cflags) | ||||||
| 	LdFlags += $(shell sdl2-config --libs) -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf | 	LdFlags += $(shell sdl2-config --libs) -lSDL2 -lSDL2_image -lSDL2_mixer -lSDL2_ttf | ||||||
| 	Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL20/*.c) | 	#Sources += $(wildcard ../../LibMultiSpacc/SDLCom/*.c ../../LibMultiSpacc/SDL20/*.c) | ||||||
| 	BuildProcess = Normal | 	BuildProcess = Normal | ||||||
| else ifeq ($(MultiSpacc_Target), NDS) | else ifeq ($(MultiSpacc_Target), NDS) | ||||||
| 	Defines += -DMultiSpacc_Target_NDS | 	Defines += -DMultiSpacc_Target_NDS | ||||||
| @@ -56,12 +57,14 @@ NDS: | |||||||
| 	cp ../NDS.mk $(VirtualBuildDir)/Makefile | 	cp ../NDS.mk $(VirtualBuildDir)/Makefile | ||||||
| 	cp $(Sources) $(VirtualBuildDir)/source/ | 	cp $(Sources) $(VirtualBuildDir)/source/ | ||||||
| 	cp $(wildcard ../../LibMultiSpacc/*.*) $(VirtualBuildDir)/source/.tmp/ | 	cp $(wildcard ../../LibMultiSpacc/*.*) $(VirtualBuildDir)/source/.tmp/ | ||||||
| 	cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_$$i; done | 	# rm of the last file is temporary fix for a strange file duplication bug | ||||||
| 	cp $(wildcard ../../LibMultiSpacc/NDS/*.*) $(VirtualBuildDir)/source/.tmp/ | 	cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_$$i; done; rm ../MultiSpacc.c # | ||||||
| 	cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_NDS_$$i; done | 	#cp $(wildcard ../../LibMultiSpacc/NDS/*.*) $(VirtualBuildDir)/source/.tmp/ | ||||||
|  | 	#cd $(VirtualBuildDir)/source/.tmp; for i in *; do mv $$i ../LibMultiSpacc_NDS_$$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]"../../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]"../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 | 	for i in $(VirtualBuildDir)/source/*; do sed -i 's|#include[ \t]"NDS/|#include "LibMultiSpacc_NDS_|g' $$i; done | ||||||
|  | 	for i in $(VirtualBuildDir)/source/*; do sed -i 's|#include[ \t]"./|#include "./LibMultiSpacc_|g' $$i; done | ||||||
| 	cd $(VirtualBuildDir); make | 	cd $(VirtualBuildDir); make | ||||||
|  |  | ||||||
| Run run: All | Run run: All | ||||||
|   | |||||||
| @@ -1,3 +1,6 @@ | |||||||
|  | # This Makefile is borrowed from devkitPro's nds-examples | ||||||
|  | # <https://github.com/devkitPro/nds-examples> | ||||||
|  |  | ||||||
| #--------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------- | ||||||
| .SUFFIXES: | .SUFFIXES: | ||||||
| #--------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------- | ||||||
| @@ -40,7 +43,6 @@ LDFLAGS	=	-specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) | |||||||
| #--------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------- | ||||||
| LIBS	:= -lnds9 | LIBS	:= -lnds9 | ||||||
|  |  | ||||||
|   |  | ||||||
| #--------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------- | ||||||
| # list of directories containing libraries, this must be the top level containing | # list of directories containing libraries, this must be the top level containing | ||||||
| # include and lib | # include and lib | ||||||
| @@ -99,7 +101,6 @@ clean: | |||||||
| 	@echo clean ... | 	@echo clean ... | ||||||
| 	@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).ds.gba  | 	@rm -fr $(BUILD) $(TARGET).elf $(TARGET).nds $(TARGET).ds.gba  | ||||||
|  |  | ||||||
|   |  | ||||||
| #--------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------- | ||||||
| else | else | ||||||
|  |  | ||||||
| @@ -117,7 +118,6 @@ $(OUTPUT).elf	:	$(OFILES) | |||||||
| 	@echo $(notdir $<) | 	@echo $(notdir $<) | ||||||
| 	$(bin2o) | 	$(bin2o) | ||||||
|  |  | ||||||
|   |  | ||||||
| -include $(DEPENDS) | -include $(DEPENDS) | ||||||
|  |  | ||||||
| #--------------------------------------------------------------------------------------- | #--------------------------------------------------------------------------------------- | ||||||
|   | |||||||
							
								
								
									
										154
									
								
								LibMultiSpacc/LibMultiSpacc/MultiSpacc.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										154
									
								
								LibMultiSpacc/LibMultiSpacc/MultiSpacc.c
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,154 @@ | |||||||
|  | #include "./MultiSpacc.h" | ||||||
|  |  | ||||||
|  | #ifdef MultiSpacc_Target_SDL12 | ||||||
|  | 	MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { | ||||||
|  | 		return SDL_SetVideoMode( WindowConfig.Width, WindowConfig.Height, WindowConfig.Bits, WindowConfig.Flags ); | ||||||
|  | 	} | ||||||
|  | 	MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { | ||||||
|  | 		return Window; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char *Title ) { | ||||||
|  | 		SDL_WM_SetCaption( Title, NULL ); | ||||||
|  | 	} | ||||||
|  | 	void MultiSpacc_SetAppIcon( MultiSpacc_Window *Window, MultiSpacc_Surface *Icon ) { | ||||||
|  | 		SDL_WM_SetIcon( Icon, NULL ); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) { | ||||||
|  | 		if( Flag ) | ||||||
|  | 			return SDL_SetColorKey( Surface, SDL_SRCCOLORKEY, Key ); | ||||||
|  | 		else | ||||||
|  | 			return SDL_SetColorKey( Surface, 0, Key ); | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef MultiSpacc_Target_SDL20 | ||||||
|  | 	MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { | ||||||
|  | 		return SDL_CreateWindow( NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WindowConfig.Width, WindowConfig.Height, WindowConfig.Flags ); | ||||||
|  | 	} | ||||||
|  | 	MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { | ||||||
|  | 		return SDL_GetWindowSurface( Window ); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ) { | ||||||
|  | 		SDL_SetWindowTitle( Window, Title ); | ||||||
|  | 	} | ||||||
|  | 	void MultiSpacc_SetAppIcon( MultiSpacc_Window *Window, MultiSpacc_Surface *Icon ) { | ||||||
|  | 		SDL_SetWindowIcon( Window, Icon ); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) { | ||||||
|  | 		if ( Flag ) { | ||||||
|  | 			return SDL_SetColorKey( Surface, SDL_TRUE, Key ); | ||||||
|  | 		} else { | ||||||
|  | 			return SDL_SetColorKey( Surface, SDL_FALSE, Key ); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef MultiSpacc_Target_SDLCom | ||||||
|  | 	int MultiSpacc_PollEvent( MultiSpacc_Event *Event ) | ||||||
|  | 	{ | ||||||
|  | 		SDL_Event FromEvent; | ||||||
|  | 		int Result = SDL_PollEvent( &FromEvent ); | ||||||
|  | 		*Event = (MultiSpacc_Event) { | ||||||
|  | 			.Type = FromEvent.type, | ||||||
|  | 			.Key = FromEvent.key.keysym.sym, | ||||||
|  | 		}; | ||||||
|  | 		return Result; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *Screen, Uint32 *ColorKey ) | ||||||
|  | 	{ | ||||||
|  | 		MultiSpacc_Surface *Final = NULL; | ||||||
|  | 		MultiSpacc_Surface *Raw = IMG_Load( FilePath ); | ||||||
|  | 		if( Raw == NULL ) { | ||||||
|  | 			printf("[E] Error reading image %s.\n", FilePath); | ||||||
|  | 		} else { | ||||||
|  | 			Final = SDL_ConvertSurface( Raw, Screen->format, 0 ); | ||||||
|  | 			SDL_FreeSurface( Raw ); | ||||||
|  | 			if( Final == NULL ) { | ||||||
|  | 				printf("[E] Error adapting image %s.\n", FilePath); | ||||||
|  | 			} else { | ||||||
|  | 				Uint32 FinalColorKey = SDL_MapRGB( Final->format, 0xFF, 0x00, 0xFF ); // Magenta | ||||||
|  | 				if( ColorKey != NULL ) | ||||||
|  | 					FinalColorKey = *ColorKey; | ||||||
|  | 				MultiSpacc_SetColorKey( Final, true, FinalColorKey ); | ||||||
|  | 			}; | ||||||
|  | 		}; | ||||||
|  | 		return Final; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	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++ ) | ||||||
|  | 		{ | ||||||
|  | 			MultiSpacc_Rect Offset = { | ||||||
|  | 				.x = (x * 8) + (8 * i), | ||||||
|  | 				.y = (y * 8), | ||||||
|  | 			}; | ||||||
|  | 			MultiSpacc_Rect Clip = { | ||||||
|  | 				.x = 8 * (Text[i] % 16), | ||||||
|  | 				.y = 8 * (Text[i] / 16), | ||||||
|  | 				.w = 8, | ||||||
|  | 				.h = 8, | ||||||
|  | 			}; | ||||||
|  | 			SDL_BlitSurface( Tiles, &Clip, Surface, &Offset ); | ||||||
|  | 		}; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_PrintDebug( const char *format, ... ) | ||||||
|  | 	{ | ||||||
|  | 		va_list args; | ||||||
|  | 		va_start(args, format); | ||||||
|  | 		fprintf(stderr, format, args); | ||||||
|  | 		va_end(args); | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef MultiSpacc_Target_NDS | ||||||
|  | 	MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) | ||||||
|  | 	{ | ||||||
|  | 		PrintConsole *bottomScreen = NULL; | ||||||
|  |  | ||||||
|  | 		videoSetModeSub(MODE_0_2D); | ||||||
|  | 		vramSetBankC(VRAM_C_SUB_BG); | ||||||
|  |  | ||||||
|  | 		bottomScreen = consoleInit(bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); | ||||||
|  | 		consoleSelect(bottomScreen); | ||||||
|  | 		return bottomScreen; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) | ||||||
|  | 	{ | ||||||
|  | 		return Window; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ){} | ||||||
|  | 	void MultiSpacc_PrintDebug( const char *format, ... ){} | ||||||
|  |  | ||||||
|  | 	int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ) | ||||||
|  | 	{ | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, MultiSpacc_SurfaceConfig WindowConfig, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) | ||||||
|  | 	{ | ||||||
|  | 		iprintf(Text); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	void MultiSpacc_Sleep( int milliseconds ) | ||||||
|  | 	{ | ||||||
|  | 		int frames = (60 * milliseconds / 1000); | ||||||
|  | 		for (int i=0; i<frames; i++) | ||||||
|  | 		{ | ||||||
|  | 			swiWaitForVBlank(); | ||||||
|  | 		}; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *Screen, Uint32 *ColorKey ) | ||||||
|  | 	{ | ||||||
|  | 		return NULL; | ||||||
|  | 	}; | ||||||
|  | #endif | ||||||
| @@ -6,17 +6,49 @@ | |||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
|  |  | ||||||
| #ifdef MultiSpacc_Target_SDL12 | #ifdef MultiSpacc_Target_SDL12 | ||||||
| 	#include "SDL12/SDL.h" | 	#include <SDL/SDL.h> | ||||||
| 	#include "SDLCom/SDL.h" | 	#include <SDL/SDL_image.h> | ||||||
|  | 	#include <SDL/SDL_mixer.h> | ||||||
|  | 	#include <SDL/SDL_ttf.h> | ||||||
|  | 	#define MultiSpacc_Window SDL_Surface | ||||||
|  | 	#define MultiSpacc_UpdateWindowSurface SDL_Flip | ||||||
|  | 	typedef struct MultiSpacc_Event { | ||||||
|  | 		Uint32 Type; | ||||||
|  | 		SDLKey Key; | ||||||
|  | 	} MultiSpacc_Event; | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifdef MultiSpacc_Target_SDL20 | #ifdef MultiSpacc_Target_SDL20 | ||||||
| 	#include "SDL20/SDL.h" | 	#include <SDL2/SDL.h> | ||||||
| 	#include "SDLCom/SDL.h" | 	#include <SDL2/SDL_image.h> | ||||||
|  | 	#include <SDL2/SDL_mixer.h> | ||||||
|  | 	#include <SDL2/SDL_ttf.h> | ||||||
|  | 	#define MultiSpacc_Window SDL_Window | ||||||
|  | 	#define MultiSpacc_UpdateWindowSurface SDL_UpdateWindowSurface | ||||||
|  | 	typedef struct MultiSpacc_Event { | ||||||
|  | 		Uint32 Type; | ||||||
|  | 		SDL_Keycode Key; | ||||||
|  | 	} MultiSpacc_Event; | ||||||
|  | #endif | ||||||
|  |  | ||||||
|  | #ifdef MultiSpacc_Target_SDLCom | ||||||
|  | 	#define MultiSpacc_Init SDL_Init | ||||||
|  | 	#define MultiSpacc_Surface SDL_Surface | ||||||
|  | 	#define MultiSpacc_GetTicks SDL_GetTicks | ||||||
|  | 	#define MultiSpacc_Sleep SDL_Delay | ||||||
|  | 	#define MultiSpacc_Rect SDL_Rect | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifdef MultiSpacc_Target_NDS | #ifdef MultiSpacc_Target_NDS | ||||||
| 	#include "NDS/NDS.h" | 	#include <nds.h> | ||||||
|  | 	#define Uint32 int32 | ||||||
|  | 	#define MultiSpacc_Surface PrintConsole | ||||||
|  | 	#define MultiSpacc_Window PrintConsole | ||||||
|  | 	typedef struct MultiSpacc_Event { | ||||||
|  | 		int Keys; | ||||||
|  | 	} MultiSpacc_Event; | ||||||
|  | 	int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ); | ||||||
|  | 	void MultiSpacc_Sleep( int milliseconds ); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| typedef struct MultiSpacc_SurfaceConfig { | typedef struct MultiSpacc_SurfaceConfig { | ||||||
|   | |||||||
| @@ -1,40 +0,0 @@ | |||||||
| #include "../MultiSpacc.h" |  | ||||||
|  |  | ||||||
| MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) |  | ||||||
| { |  | ||||||
| 	PrintConsole *bottomScreen = NULL; |  | ||||||
|  |  | ||||||
| 	videoSetModeSub(MODE_0_2D); |  | ||||||
| 	vramSetBankC(VRAM_C_SUB_BG); |  | ||||||
|  |  | ||||||
| 	bottomScreen = consoleInit(bottomScreen, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); |  | ||||||
| 	consoleSelect(bottomScreen); |  | ||||||
| 	return bottomScreen; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) |  | ||||||
| { |  | ||||||
| 	return Window; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ){} |  | ||||||
| void MultiSpacc_PrintDebug( const char *format, ... ){} |  | ||||||
|  |  | ||||||
| int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ) |  | ||||||
| { |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_PrintText( char Text[], MultiSpacc_Surface *Surface, MultiSpacc_SurfaceConfig WindowConfig, int x, int y, MultiSpacc_Surface *Tiles /*, int FontSize, int Color */ ) |  | ||||||
| { |  | ||||||
| 	iprintf(Text); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_Sleep( int milliseconds ) |  | ||||||
| { |  | ||||||
| 	int frames = (60 * milliseconds / 1000); |  | ||||||
| 	for (int i=0; i<frames; i++) |  | ||||||
| 	{ |  | ||||||
| 		swiWaitForVBlank(); |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
| @@ -1,20 +0,0 @@ | |||||||
| #pragma once |  | ||||||
|  |  | ||||||
| #ifndef MultiSpacc_Target_NDS |  | ||||||
| 	#define MultiSpacc_Target_NDS |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #include "../MultiSpacc.h" |  | ||||||
| #include <nds.h> |  | ||||||
|  |  | ||||||
| #define Uint32 int32 |  | ||||||
| #define MultiSpacc_Surface PrintConsole |  | ||||||
| #define MultiSpacc_Window PrintConsole |  | ||||||
|  |  | ||||||
| typedef struct MultiSpacc_Event { |  | ||||||
|     int Keys; |  | ||||||
| } MultiSpacc_Event; |  | ||||||
|  |  | ||||||
| int MultiSpacc_UpdateWindowSurface( MultiSpacc_Window *Window ); |  | ||||||
|  |  | ||||||
| void MultiSpacc_Sleep( int milliseconds ); |  | ||||||
| @@ -1,27 +0,0 @@ | |||||||
| #include "../MultiSpacc.h" |  | ||||||
| #include "SDL/SDL.h" |  | ||||||
| #include "SDL/SDL_image.h" |  | ||||||
| #include "SDL/SDL_mixer.h" |  | ||||||
| #include "SDL/SDL_ttf.h" |  | ||||||
| #include "../SDLCom/SDL.h" |  | ||||||
|  |  | ||||||
| MultiSpacc_Window MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { |  | ||||||
| 	return *SDL_SetVideoMode( WindowConfig.Width, WindowConfig.Height, WindowConfig.Bits, WindowConfig.Flags ); |  | ||||||
| } |  | ||||||
| MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { |  | ||||||
| 	return Window; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char *Title ) { |  | ||||||
| 	SDL_WM_SetCaption( Title, NULL ); |  | ||||||
| } |  | ||||||
| void MultiSpacc_SetAppIcon( MultiSpacc_Window *Window, MultiSpacc_Surface *Icon ) { |  | ||||||
| 	SDL_WM_SetIcon( Icon, NULL ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) { |  | ||||||
| 	if( Flag ) |  | ||||||
| 		return SDL_SetColorKey( Surface, SDL_SRCCOLORKEY, Key ); |  | ||||||
| 	else |  | ||||||
| 		return SDL_SetColorKey( Surface, 0, Key ); |  | ||||||
| } |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| #pragma once |  | ||||||
|  |  | ||||||
| #ifndef MultiSpacc_Target_SDL12 |  | ||||||
| 	#define MultiSpacc_Target_SDL12 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #include "../MultiSpacc.h" |  | ||||||
| #include <SDL/SDL.h> |  | ||||||
| #include <SDL/SDL_image.h> |  | ||||||
| #include <SDL/SDL_mixer.h> |  | ||||||
| #include <SDL/SDL_ttf.h> |  | ||||||
|  |  | ||||||
| #define MultiSpacc_Window SDL_Surface |  | ||||||
| #define MultiSpacc_UpdateWindowSurface SDL_Flip |  | ||||||
|  |  | ||||||
| typedef struct MultiSpacc_Event { |  | ||||||
| 	Uint32 Type; |  | ||||||
| 	SDLKey Key; |  | ||||||
| } MultiSpacc_Event; |  | ||||||
| @@ -1,27 +0,0 @@ | |||||||
| #include "../MultiSpacc.h" |  | ||||||
| #include "SDL2/SDL.h" |  | ||||||
| #include "SDL2/SDL_image.h" |  | ||||||
| #include "SDL2/SDL_mixer.h" |  | ||||||
| #include "SDL2/SDL_ttf.h" |  | ||||||
| #include "../SDLCom/SDL.h" |  | ||||||
|  |  | ||||||
| MultiSpacc_Window *MultiSpacc_SetWindow( MultiSpacc_SurfaceConfig WindowConfig ) { |  | ||||||
| 	return SDL_CreateWindow( NULL, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, WindowConfig.Width, WindowConfig.Height, WindowConfig.Flags ); |  | ||||||
| } |  | ||||||
| MultiSpacc_Surface *MultiSpacc_GetWindowSurface( MultiSpacc_Window *Window ) { |  | ||||||
| 	return SDL_GetWindowSurface( Window ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_SetAppTitle( MultiSpacc_Window *Window, const char Title[] ) { |  | ||||||
| 	SDL_SetWindowTitle( Window, Title ); |  | ||||||
| } |  | ||||||
| void MultiSpacc_SetAppIcon( MultiSpacc_Window *Window, MultiSpacc_Surface *Icon ) { |  | ||||||
| 	SDL_SetWindowIcon( Window, Icon ); |  | ||||||
| } |  | ||||||
|  |  | ||||||
| int MultiSpacc_SetColorKey( MultiSpacc_Surface *Surface, bool Flag, Uint32 Key ) { |  | ||||||
| 	if ( Flag ) |  | ||||||
| 		return SDL_SetColorKey( Surface, SDL_TRUE, Key ); |  | ||||||
| 	else |  | ||||||
| 		return SDL_SetColorKey( Surface, SDL_FALSE, Key ); |  | ||||||
| } |  | ||||||
| @@ -1,19 +0,0 @@ | |||||||
| #pragma once |  | ||||||
|  |  | ||||||
| #ifndef MultiSpacc_Target_SDL20 |  | ||||||
| 	#define MultiSpacc_Target_SDL20 |  | ||||||
| #endif |  | ||||||
|  |  | ||||||
| #include "../MultiSpacc.h" |  | ||||||
| #include <SDL2/SDL.h> |  | ||||||
| #include <SDL2/SDL_image.h> |  | ||||||
| #include <SDL2/SDL_mixer.h> |  | ||||||
| #include <SDL2/SDL_ttf.h> |  | ||||||
|  |  | ||||||
| #define MultiSpacc_Window SDL_Window |  | ||||||
| #define MultiSpacc_UpdateWindowSurface SDL_UpdateWindowSurface |  | ||||||
|  |  | ||||||
| typedef struct MultiSpacc_Event { |  | ||||||
|     Uint32 Type; |  | ||||||
|     SDL_Keycode Key; |  | ||||||
| } MultiSpacc_Event; |  | ||||||
| @@ -1,59 +0,0 @@ | |||||||
| #include "../MultiSpacc.h" |  | ||||||
|  |  | ||||||
| int MultiSpacc_PollEvent( MultiSpacc_Event *Event ) |  | ||||||
| { |  | ||||||
| 	SDL_Event FromEvent; |  | ||||||
| 	int Result = SDL_PollEvent( &FromEvent ); |  | ||||||
| 	*Event = (MultiSpacc_Event) { |  | ||||||
| 		.Type = FromEvent.type, |  | ||||||
| 		.Key = FromEvent.key.keysym.sym, |  | ||||||
| 	}; |  | ||||||
| 	return Result; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| MultiSpacc_Surface *MultiSpacc_LoadImage( char FilePath[], MultiSpacc_Surface *Screen, Uint32 *ColorKey ) |  | ||||||
| { |  | ||||||
| 	MultiSpacc_Surface *Final = NULL; |  | ||||||
| 	MultiSpacc_Surface *Raw = IMG_Load( FilePath ); |  | ||||||
| 	if( Raw == NULL ) { |  | ||||||
| 		printf("[E] Error reading image %s.\n", FilePath); |  | ||||||
| 	} else { |  | ||||||
| 		Final = SDL_ConvertSurface( Raw, Screen->format, 0 ); |  | ||||||
| 		SDL_FreeSurface( Raw ); |  | ||||||
| 		if( Final == NULL ) { |  | ||||||
| 			printf("[E] Error adapting image %s.\n", FilePath); |  | ||||||
| 		} else { |  | ||||||
| 			Uint32 FinalColorKey = SDL_MapRGB( Final->format, 0xFF, 0x00, 0xFF ); // Magenta |  | ||||||
| 			if( ColorKey != NULL ) |  | ||||||
| 				FinalColorKey = *ColorKey; |  | ||||||
| 			MultiSpacc_SetColorKey( Final, true, FinalColorKey ); |  | ||||||
| 		}; |  | ||||||
| 	}; |  | ||||||
| 	return Final; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| 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++ ) |  | ||||||
| 	{ |  | ||||||
| 		MultiSpacc_Rect Offset = { |  | ||||||
| 			.x = (x * 8) + (8 * i), |  | ||||||
| 			.y = (y * 8), |  | ||||||
| 		}; |  | ||||||
| 		MultiSpacc_Rect Clip = { |  | ||||||
| 			.x = 8 * (Text[i] % 16), |  | ||||||
| 			.y = 8 * (Text[i] / 16), |  | ||||||
| 			.w = 8, |  | ||||||
| 			.h = 8, |  | ||||||
| 		}; |  | ||||||
| 		SDL_BlitSurface( Tiles, &Clip, Surface, &Offset ); |  | ||||||
| 	}; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| void MultiSpacc_PrintDebug( const char *format, ... ) |  | ||||||
| { |  | ||||||
| 	va_list args; |  | ||||||
| 	va_start(args, format); |  | ||||||
| 	fprintf(stderr, format, args); |  | ||||||
| 	va_end(args); |  | ||||||
| } |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| #pragma once |  | ||||||
|  |  | ||||||
| #include "../MultiSpacc.h" |  | ||||||
|  |  | ||||||
| #define MultiSpacc_Init SDL_Init |  | ||||||
| #define MultiSpacc_Surface SDL_Surface |  | ||||||
| #define MultiSpacc_GetTicks SDL_GetTicks |  | ||||||
| #define MultiSpacc_Sleep SDL_Delay |  | ||||||
| #define MultiSpacc_Rect SDL_Rect |  | ||||||
		Reference in New Issue
	
	Block a user