no message
This commit is contained in:
		
							
								
								
									
										55
									
								
								src/studio.c
									
									
									
									
									
								
							
							
						
						
									
										55
									
								
								src/studio.c
									
									
									
									
									
								
							@@ -47,6 +47,7 @@
 | 
				
			|||||||
#include "ext/md5.h"
 | 
					#include "ext/md5.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define STUDIO_UI_SCALE 3
 | 
					#define STUDIO_UI_SCALE 3
 | 
				
			||||||
 | 
					#define TEXTURE_SIZE (TIC80_FULLWIDTH)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define MAX_CONTROLLERS 4
 | 
					#define MAX_CONTROLLERS 4
 | 
				
			||||||
#define STUDIO_PIXEL_FORMAT SDL_PIXELFORMAT_ARGB8888
 | 
					#define STUDIO_PIXEL_FORMAT SDL_PIXELFORMAT_ARGB8888
 | 
				
			||||||
@@ -1406,12 +1407,10 @@ inline s32 clamp(s32 a, s32 b, s32 val)
 | 
				
			|||||||
	return val;
 | 
						return val;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static void blit(u32* out, s32 pitch, s32 bgPitch)
 | 
					static void blit(u32* out)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	tic_mem* tic = studio.tic;
 | 
						tic_mem* tic = studio.tic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const s32 pitchWidth = pitch/sizeof *out;
 | 
					 | 
				
			||||||
	u32* row = out;
 | 
					 | 
				
			||||||
	const u32* pal = paletteBlit();
 | 
						const u32* pal = paletteBlit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	void(*scanline)(tic_mem* memory, s32 row) = NULL;
 | 
						void(*scanline)(tic_mem* memory, s32 row) = NULL;
 | 
				
			||||||
@@ -1431,7 +1430,7 @@ static void blit(u32* out, s32 pitch, s32 bgPitch)
 | 
				
			|||||||
		break;
 | 
							break;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for(s32 r = 0; r < TIC80_HEIGHT; r++, row += pitchWidth)
 | 
						for(s32 r = 0; r < TIC80_HEIGHT; r++)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		if(scanline)
 | 
							if(scanline)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
@@ -1439,29 +1438,20 @@ static void blit(u32* out, s32 pitch, s32 bgPitch)
 | 
				
			|||||||
			pal = paletteBlit();
 | 
								pal = paletteBlit();
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// 	u8 border = tic_tool_peek4(tic->ram.vram.mapping, tic->ram.vram.vars.border & 0xf);
 | 
							SDL_memset4(&out[r * TEXTURE_SIZE], pal[tic->ram.vram.vars.bg], TEXTURE_SIZE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		SDL_memset4(row, pal[tic->ram.vram.vars.bg], pitchWidth);
 | 
							s32 y = r + tic->ram.vram.vars.offset.y;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		s32 actualRow = r - tic->ram.vram.vars.offset.y;
 | 
							if(y < 0 || y >= TIC80_HEIGHT) continue;
 | 
				
			||||||
		
 | 
							
 | 
				
			||||||
		if(actualRow >= TIC80_HEIGHT || actualRow < 0)
 | 
							for(s32 c = 0; c < TIC80_WIDTH; c++)
 | 
				
			||||||
			continue;
 | 
							{
 | 
				
			||||||
 | 
								s32 x = c + tic->ram.vram.vars.offset.x;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		s32 pos = actualRow * TIC80_WIDTH;
 | 
								if(x < 0 || x >= TIC80_WIDTH) continue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if(tic->ram.vram.vars.offset.x == 0)
 | 
								out[c + r * TEXTURE_SIZE] = pal[tic_tool_peek4(tic->ram.vram.screen.data, x + y * TIC80_WIDTH)];
 | 
				
			||||||
			for(u32* ptr = row, c = 0; c < TIC80_WIDTH; c++, ptr++)
 | 
							}
 | 
				
			||||||
				*ptr = pal[tic_tool_peek4(tic->ram.vram.screen.data, pos++)];
 | 
					 | 
				
			||||||
		else
 | 
					 | 
				
			||||||
			for(u32* ptr = row, c = 0; c < TIC80_WIDTH; c++, ptr++)
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				s32 x = c + tic->ram.vram.vars.offset.x;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				if(x < 0 || x >= TIC80_WIDTH) continue;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
				*ptr = pal[tic_tool_peek4(tic->ram.vram.screen.data, x + pos)];
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1484,7 +1474,8 @@ static void setCoverImage()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		if(pixels)
 | 
							if(pixels)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			blit(pixels, Pitch, 0);
 | 
								// TODO: blit without border
 | 
				
			||||||
 | 
								// blit(pixels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			u32* buffer = SDL_malloc(TIC80_WIDTH * TIC80_HEIGHT * sizeof(u32));
 | 
								u32* buffer = SDL_malloc(TIC80_WIDTH * TIC80_HEIGHT * sizeof(u32));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -1915,13 +1906,11 @@ static void blitTexture()
 | 
				
			|||||||
	SDL_Rect rect = {0, 0, 0, 0};
 | 
						SDL_Rect rect = {0, 0, 0, 0};
 | 
				
			||||||
	calcTextureRect(&rect);
 | 
						calcTextureRect(&rect);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	rect.w = rect.w * TIC80_WIDTH / TIC80_WIDTH;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	void* pixels = NULL;
 | 
						void* pixels = NULL;
 | 
				
			||||||
	s32 pitch = 0;
 | 
						s32 pitch = 0;
 | 
				
			||||||
	SDL_LockTexture(studio.texture, NULL, &pixels, &pitch);
 | 
						SDL_LockTexture(studio.texture, NULL, &pixels, &pitch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	blit(pixels, pitch, 0);
 | 
						blit(pixels);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	recordFrame(pixels, pitch);
 | 
						recordFrame(pixels, pitch);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2211,14 +2200,6 @@ static void initSound()
 | 
				
			|||||||
		SDL_PauseAudioDevice(studio.audioDevice, 0);
 | 
							SDL_PauseAudioDevice(studio.audioDevice, 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static s32 textureLog2(s32 val)
 | 
					 | 
				
			||||||
{
 | 
					 | 
				
			||||||
	u32 rom = 0;
 | 
					 | 
				
			||||||
	while( val >>= 1 ) rom++;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	return 1 << ++rom;
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
static void initTouchGamepad()
 | 
					static void initTouchGamepad()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (!studio.renderer)
 | 
						if (!studio.renderer)
 | 
				
			||||||
@@ -2228,8 +2209,7 @@ static void initTouchGamepad()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	if(!studio.gamepad.texture)
 | 
						if(!studio.gamepad.texture)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		studio.gamepad.texture = SDL_CreateTexture(studio.renderer, STUDIO_PIXEL_FORMAT, SDL_TEXTUREACCESS_STREAMING,
 | 
							studio.gamepad.texture = SDL_CreateTexture(studio.renderer, STUDIO_PIXEL_FORMAT, SDL_TEXTUREACCESS_STREAMING, TEXTURE_SIZE, TEXTURE_SIZE);
 | 
				
			||||||
			textureLog2(TIC80_FULLWIDTH), textureLog2(TIC80_FULLHEIGHT));
 | 
					 | 
				
			||||||
		SDL_SetTextureBlendMode(studio.gamepad.texture, SDL_BLENDMODE_BLEND);
 | 
							SDL_SetTextureBlendMode(studio.gamepad.texture, SDL_BLENDMODE_BLEND);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -2367,8 +2347,7 @@ static void onFSInitialized(FileSystem* fs)
 | 
				
			|||||||
	if(!studio.renderer)
 | 
						if(!studio.renderer)
 | 
				
			||||||
		studio.softwareRenderer = studio.renderer = SDL_CreateRenderer(studio.window, -1, SDL_RENDERER_SOFTWARE);
 | 
							studio.softwareRenderer = studio.renderer = SDL_CreateRenderer(studio.window, -1, SDL_RENDERER_SOFTWARE);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	studio.texture = SDL_CreateTexture(studio.renderer, STUDIO_PIXEL_FORMAT, SDL_TEXTUREACCESS_STREAMING,
 | 
						studio.texture = SDL_CreateTexture(studio.renderer, STUDIO_PIXEL_FORMAT, SDL_TEXTUREACCESS_STREAMING, TEXTURE_SIZE, TEXTURE_SIZE);
 | 
				
			||||||
		textureLog2(TIC80_WIDTH), textureLog2(TIC80_HEIGHT));
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	initTouchGamepad();
 | 
						initTouchGamepad();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user