no message
This commit is contained in:
		@@ -905,13 +905,6 @@ static void onConsoleConfigCommand(Console* console, const char* param)
 | 
			
		||||
	commandDone(console);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static s32 saveRom(tic_mem* tic, void* buffer)
 | 
			
		||||
{
 | 
			
		||||
	s32 size = tic->api.save(&tic->cart, buffer);
 | 
			
		||||
 | 
			
		||||
	return size;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void onFileDownloaded(GetResult result, void* data)
 | 
			
		||||
{
 | 
			
		||||
	Console* console = (Console*)data;
 | 
			
		||||
@@ -1245,6 +1238,8 @@ static void writeMemoryString(MemoryBuffer* memory, const char* str)
 | 
			
		||||
 | 
			
		||||
static void onConsoleExportHtmlCommand(Console* console, const char* name)
 | 
			
		||||
{
 | 
			
		||||
	tic_mem* tic = console->tic;
 | 
			
		||||
 | 
			
		||||
	char cartName[FILENAME_MAX];
 | 
			
		||||
	strcpy(cartName, name);
 | 
			
		||||
 | 
			
		||||
@@ -1286,8 +1281,26 @@ static void onConsoleExportHtmlCommand(Console* console, const char* name)
 | 
			
		||||
			{
 | 
			
		||||
				writeMemoryString(&output, "var cartridge = [");
 | 
			
		||||
 | 
			
		||||
				s32 size = saveRom(console->tic, buffer);
 | 
			
		||||
				s32 size = 0;
 | 
			
		||||
 | 
			
		||||
				// create cart copy
 | 
			
		||||
				{
 | 
			
		||||
					tic_cartridge* dup = SDL_malloc(sizeof(tic_cartridge));
 | 
			
		||||
 | 
			
		||||
					SDL_memcpy(dup, &tic->cart, sizeof(tic_cartridge));
 | 
			
		||||
 | 
			
		||||
					if(processDoFile())
 | 
			
		||||
					{
 | 
			
		||||
						SDL_memcpy(dup->code.data, tic->code.data, sizeof(tic_code));
 | 
			
		||||
						
 | 
			
		||||
						size = tic->api.save(dup, buffer);
 | 
			
		||||
					}
 | 
			
		||||
 | 
			
		||||
					SDL_free(dup);
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if(size)
 | 
			
		||||
				{
 | 
			
		||||
					// zip buffer
 | 
			
		||||
					{
 | 
			
		||||
						unsigned long outSize = sizeof(tic_cartridge);
 | 
			
		||||
@@ -1326,6 +1339,7 @@ static void onConsoleExportHtmlCommand(Console* console, const char* name)
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	SDL_free(EmbedIndex);
 | 
			
		||||
	SDL_free(EmbedTicJs);
 | 
			
		||||
@@ -1526,6 +1540,8 @@ static void onConsoleExportCommand(Console* console, const char* param)
 | 
			
		||||
 | 
			
		||||
static CartSaveResult saveCartName(Console* console, const char* name)
 | 
			
		||||
{
 | 
			
		||||
	tic_mem* tic = console->tic;
 | 
			
		||||
 | 
			
		||||
	bool success = false;
 | 
			
		||||
 | 
			
		||||
	if(name && strlen(name))
 | 
			
		||||
@@ -1543,7 +1559,7 @@ static CartSaveResult saveCartName(Console* console, const char* name)
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				s32 size = saveRom(console->tic, buffer);
 | 
			
		||||
				s32 size = tic->api.save(&tic->cart, buffer);
 | 
			
		||||
 | 
			
		||||
				name = getRomName(name);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								src/run.c
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								src/run.c
									
									
									
									
									
								
							@@ -89,7 +89,7 @@ static const char* getPMemName(Run* run)
 | 
			
		||||
 | 
			
		||||
static void tick(Run* run)
 | 
			
		||||
{
 | 
			
		||||
	tic_mem* tic = run->tic;
 | 
			
		||||
	// tic_mem* tic = run->tic;
 | 
			
		||||
 | 
			
		||||
	while(pollEvent());
 | 
			
		||||
 | 
			
		||||
@@ -98,52 +98,8 @@ static void tick(Run* run)
 | 
			
		||||
 | 
			
		||||
	if(!run->init)
 | 
			
		||||
	{
 | 
			
		||||
		// process 'dofile'
 | 
			
		||||
		{
 | 
			
		||||
			memset(tic->code.data, 0, sizeof(tic_code));
 | 
			
		||||
 | 
			
		||||
			static const char DoFileTag[] = "dofile(";
 | 
			
		||||
			enum {Size = sizeof DoFileTag - 1};
 | 
			
		||||
 | 
			
		||||
			if (memcmp(tic->cart.code.data, DoFileTag, Size) == 0)
 | 
			
		||||
			{
 | 
			
		||||
				const char* start = tic->cart.code.data + Size;
 | 
			
		||||
				const char* end = strchr(start, ')');
 | 
			
		||||
 | 
			
		||||
				if(end && *start == *(end-1) && (*start == '"' || *start == '\''))
 | 
			
		||||
				{
 | 
			
		||||
					char filename[FILENAME_MAX] = {0};
 | 
			
		||||
					memcpy(filename, start + 1, end - start - 2);
 | 
			
		||||
 | 
			
		||||
					s32 size = 0;
 | 
			
		||||
					void* buffer = fsReadFile(filename, &size);
 | 
			
		||||
 | 
			
		||||
					if(buffer)
 | 
			
		||||
					{
 | 
			
		||||
						if(size > 0)
 | 
			
		||||
						{
 | 
			
		||||
							if(size > TIC_CODE_SIZE)
 | 
			
		||||
							{
 | 
			
		||||
								char buffer[256];
 | 
			
		||||
								sprintf(buffer, "code is larger than %i symbols", TIC_CODE_SIZE);
 | 
			
		||||
								onError(run, buffer);
 | 
			
		||||
 | 
			
		||||
		if(processDoFile())
 | 
			
		||||
			return;
 | 
			
		||||
							}
 | 
			
		||||
							else SDL_memcpy(tic->code.data, buffer, size);
 | 
			
		||||
						}
 | 
			
		||||
					}
 | 
			
		||||
					else
 | 
			
		||||
					{
 | 
			
		||||
						char buffer[256];
 | 
			
		||||
						sprintf(buffer, "dofile: file '%s' not found", filename);
 | 
			
		||||
						onError(run, buffer);
 | 
			
		||||
 | 
			
		||||
						return;
 | 
			
		||||
					}
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		run->tickData.start = run->tickData.counter(),
 | 
			
		||||
		run->init = true;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										54
									
								
								src/studio.c
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								src/studio.c
									
									
									
									
									
								
							@@ -1357,6 +1357,60 @@ static void onFullscreen()
 | 
			
		||||
	SDL_SetWindowFullscreen(studio.window, studio.fullscreen ? SDL_WINDOW_FULLSCREEN_DESKTOP : 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool processDoFile()
 | 
			
		||||
{
 | 
			
		||||
	tic_mem* tic = studio.tic;
 | 
			
		||||
 | 
			
		||||
	memset(tic->code.data, 0, sizeof(tic_code));
 | 
			
		||||
 | 
			
		||||
	static const char DoFileTag[] = "dofile(";
 | 
			
		||||
	enum {Size = sizeof DoFileTag - 1};
 | 
			
		||||
 | 
			
		||||
	if (memcmp(tic->cart.code.data, DoFileTag, Size) == 0)
 | 
			
		||||
	{
 | 
			
		||||
		const char* start = tic->cart.code.data + Size;
 | 
			
		||||
		const char* end = strchr(start, ')');
 | 
			
		||||
 | 
			
		||||
		if(end && *start == *(end-1) && (*start == '"' || *start == '\''))
 | 
			
		||||
		{
 | 
			
		||||
			char filename[FILENAME_MAX] = {0};
 | 
			
		||||
			memcpy(filename, start + 1, end - start - 2);
 | 
			
		||||
 | 
			
		||||
			s32 size = 0;
 | 
			
		||||
			void* buffer = fsReadFile(filename, &size);
 | 
			
		||||
 | 
			
		||||
			if(buffer)
 | 
			
		||||
			{
 | 
			
		||||
				if(size > 0)
 | 
			
		||||
				{
 | 
			
		||||
					if(size > TIC_CODE_SIZE)
 | 
			
		||||
					{
 | 
			
		||||
						char buffer[256];
 | 
			
		||||
						sprintf(buffer, "code is larger than %i symbols", TIC_CODE_SIZE);
 | 
			
		||||
						setStudioMode(TIC_CONSOLE_MODE);
 | 
			
		||||
						studio.console.error(&studio.console, buffer);
 | 
			
		||||
 | 
			
		||||
						return false;
 | 
			
		||||
					}
 | 
			
		||||
					else SDL_memcpy(tic->code.data, buffer, size);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			else
 | 
			
		||||
			{
 | 
			
		||||
				char buffer[256];
 | 
			
		||||
				sprintf(buffer, "dofile: file '%s' not found", filename);
 | 
			
		||||
				setStudioMode(TIC_CONSOLE_MODE);
 | 
			
		||||
				studio.console.error(&studio.console, buffer);
 | 
			
		||||
 | 
			
		||||
				return false;
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	else SDL_memcpy(tic->code.data, tic->cart.code.data, sizeof(tic_code));
 | 
			
		||||
 | 
			
		||||
	return true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void runProject()
 | 
			
		||||
{
 | 
			
		||||
	studio.tic->api.reset(studio.tic);
 | 
			
		||||
 
 | 
			
		||||
@@ -193,3 +193,4 @@ void gotoCode();
 | 
			
		||||
void gotoSurf();
 | 
			
		||||
void exitFromGameMenu();
 | 
			
		||||
void runProject();
 | 
			
		||||
bool processDoFile();
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user