Tweaked Input args and other stuff
This commit is contained in:
parent
5cc21f3a6f
commit
45b8993cdd
78
src/main.c
78
src/main.c
@ -1,4 +1,6 @@
|
|||||||
#include <SDL2/SDL_render.h>
|
#include <SDL2/SDL_render.h>
|
||||||
|
#include <SDL2/SDL_video.h>
|
||||||
|
#include <ctype.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -9,8 +11,8 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
/* Preset Values */
|
/* Preset Values */
|
||||||
static float displayScale = 2;
|
static float displayScale = 1;
|
||||||
static int cpuSpeed = 100000; // 100 kHz
|
static int cpuSpeed = 1000000; // 1 MHz
|
||||||
static int singleStep = 0;
|
static int singleStep = 0;
|
||||||
static int clockSteps = 1;
|
static int clockSteps = 1;
|
||||||
|
|
||||||
@ -28,6 +30,7 @@ uint8_t showDebug = 0;
|
|||||||
uint8_t fpsCount = 0;
|
uint8_t fpsCount = 0;
|
||||||
uint8_t displayMmap = 0;
|
uint8_t displayMmap = 0;
|
||||||
uint8_t documentReload = 0;
|
uint8_t documentReload = 0;
|
||||||
|
uint8_t randomize = 0;
|
||||||
|
|
||||||
uint8_t fpsStore = 60;
|
uint8_t fpsStore = 60;
|
||||||
uint8_t FPS = 30;
|
uint8_t FPS = 30;
|
||||||
@ -36,12 +39,11 @@ uint8_t cpuHealth;
|
|||||||
unsigned long cpuTicks = 0;
|
unsigned long cpuTicks = 0;
|
||||||
unsigned long tickTrigger = 0;
|
unsigned long tickTrigger = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
char debugString[512];
|
char debugString[512];
|
||||||
char snapshotFile[32];
|
char snapshotFile[32];
|
||||||
char *reloadExecute;
|
char *reloadExecute;
|
||||||
char *inputFile;
|
char *inputFile;
|
||||||
|
char *displaySpeed;
|
||||||
|
|
||||||
int openFile(){
|
int openFile(){
|
||||||
FILE *file = fopen(inputFile, "rb");
|
FILE *file = fopen(inputFile, "rb");
|
||||||
@ -61,25 +63,52 @@ int openFile(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void resetSystem(){
|
void resetSystem(){
|
||||||
|
srand((unsigned)time(NULL));
|
||||||
|
|
||||||
|
if (randomize) {
|
||||||
|
for (int i = 0; i < RAMSIZE + 1; i++) ram[i] = rand();
|
||||||
|
}
|
||||||
|
|
||||||
initVideo();
|
initVideo();
|
||||||
updateVideo();
|
updateVideo();
|
||||||
reset6502();
|
reset6502();
|
||||||
}
|
}
|
||||||
|
|
||||||
void fetchArgs(int argc, char *argv[]){
|
int parseFormat(char *format){
|
||||||
printf(PREAMBLE);
|
float retVal = 0;
|
||||||
|
int i = 0;
|
||||||
|
for (;isdigit(format[i]) || format[i] == '.'; i++);
|
||||||
|
|
||||||
|
char tmp = format[i];
|
||||||
|
format[i] = 0;
|
||||||
|
retVal = atof(format);
|
||||||
|
format[i] = tmp;
|
||||||
|
|
||||||
|
if (!strcasecmp((format + i), "hz"));
|
||||||
|
else if (!strcasecmp((format + i), "khz")) retVal *= 1000;
|
||||||
|
else if (!strcasecmp((format + i), "mhz")) retVal *= 1000000;
|
||||||
|
else {
|
||||||
|
printf("\"%s\" is not a supported format\nSupported formats include: Hz, KHz and MHz\n", (format + i));
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (int)retVal;
|
||||||
|
}
|
||||||
|
|
||||||
|
void fetchArgs(int argc, char *argv[]){
|
||||||
for (int i = 1; i < argc; i++) {
|
for (int i = 1; i < argc; i++) {
|
||||||
if (!strcmp(argv[i], "--help")) printf(HELP);
|
if (!strcmp(argv[i], "--help")) { printf(PREAMBLE); printf(HELP); exit(0); }
|
||||||
else if (!strcmp(argv[i], "--help-keys")) printf(HELPKEYS);
|
else if (!strcmp(argv[i], "--help-keys")) { printf(PREAMBLE); printf(HELPKEYS); exit(0); }
|
||||||
else if (!strcmp(argv[i], "--cpuspeed")) cpuSpeed = atoi(argv[++i]);
|
else if (!strcmp(argv[i], "--cpuspeed")) { cpuSpeed = parseFormat(argv[++i]); displaySpeed = argv[i]; }
|
||||||
else if (!strcmp(argv[i], "--scale")) displayScale = atof(argv[++i]);
|
else if (!strcmp(argv[i], "--scale")) displayScale = atof(argv[++i]);
|
||||||
else if (!strcmp(argv[i], "--singlestep")) singleStep = 1;
|
else if (!strcmp(argv[i], "--singlestep")) singleStep = 1;
|
||||||
else if (!strcmp(argv[i], "--clocksteps")) clockSteps = atoi(argv[++i]);
|
else if (!strcmp(argv[i], "--clocksteps")) clockSteps = atoi(argv[++i]);
|
||||||
//else if (!strcmp(argv[i], "--snapshot")) snapshotFile = &argv[i];
|
//else if (!strcmp(argv[i], "--snapshot")) snapshotFile = &argv[i];
|
||||||
else if (!strcmp(argv[i], "--fps")) FPS = atoi(argv[++i]);
|
else if (!strcmp(argv[i], "--fps")) FPS = atoi(argv[++i]);
|
||||||
else if (!strcmp(argv[i], "--enable-reload")) documentReload = 1;
|
else if (!strcmp(argv[i], "--reload-program")) documentReload = 1;
|
||||||
else if (!strcmp(argv[i], "--reload-execute")) reloadExecute = argv[++i];
|
else if (!strcmp(argv[i], "--script")) reloadExecute = argv[++i];
|
||||||
|
else if (!strcmp(argv[i], "--resizable")) WINMODE |= SDL_WINDOW_RESIZABLE;
|
||||||
|
else if (!strcmp(argv[i], "--randomize")) randomize = 1;
|
||||||
else {
|
else {
|
||||||
inputFile = argv[i];
|
inputFile = argv[i];
|
||||||
if (openFile()){
|
if (openFile()){
|
||||||
@ -90,6 +119,7 @@ void fetchArgs(int argc, char *argv[]){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
fetchArgs(argc, argv);
|
fetchArgs(argc, argv);
|
||||||
initWindow();
|
initWindow();
|
||||||
@ -129,35 +159,33 @@ int main(int argc, char *argv[]){
|
|||||||
|
|
||||||
if (halt) {
|
if (halt) {
|
||||||
drawString("!CPU Haltet!", renderMemory,
|
drawString("!CPU Haltet!", renderMemory,
|
||||||
SDL_X_SIZE, 0x000000FF, time(NULL) % 2 ? 0xAAAAAAFF : 0xFFFFFFFF, 16, vStack, 2);
|
SDL_X_SIZE, 0x000000FF, time(NULL) % 2 ? 0xAAAAAAFF : 0xFFFFFFFF, 16, vStack, 1);
|
||||||
|
|
||||||
vStack += (FONT_HEIGHT * 2 * 2);
|
vStack += (FONT_HEIGHT * 2);
|
||||||
} if (showDebug){
|
} if (showDebug){
|
||||||
sprintf(debugString, "LOADED BINARY: \"%s\"\nSCREENSIZE: %dx%d\nFPS: %d\nSCALE: %d", inputFile, SDL_X_SIZE, SDL_Y_SIZE, fpsStore, (int)displayScale);
|
sprintf(debugString, "LOADED BINARY: \"%s\"\nSCREENSIZE: %dx%d\nFPS: %d\nSCALE: %d", inputFile, SDL_X_SIZE, SDL_Y_SIZE, fpsStore, (int)displayScale);
|
||||||
drawString(debugString, renderMemory,
|
drawString(debugString, renderMemory,
|
||||||
SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 2);
|
SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 1);
|
||||||
|
|
||||||
vStack += (FONT_HEIGHT * 4 * 2);
|
vStack += (FONT_HEIGHT * 4);
|
||||||
|
|
||||||
sprintf(debugString, "CPU: %d%%", cpuHealth);
|
sprintf(debugString, "CPU: %d%% @ %s", cpuHealth, displaySpeed);
|
||||||
drawString(debugString, renderMemory,
|
drawString(debugString, renderMemory,
|
||||||
SDL_X_SIZE, 0x000000FF, time(NULL) % 2 ? 0xAAAAAAFF : cpuHealth < 10 ?
|
SDL_X_SIZE, 0x000000FF, time(NULL) % 2 ? 0xAAAAAAFF : cpuHealth < 10 ?
|
||||||
0xFF0000FF : cpuHealth < 50 ? 0xFFFF00FF : 0xAAAAAAFF, 16, vStack, 2);
|
0xFF0000FF : cpuHealth < 50 ? 0xFFFF00FF : 0xAAAAAAFF, 16, vStack, 1);
|
||||||
|
|
||||||
vStack += (FONT_HEIGHT * 2 * 2);
|
vStack += (FONT_HEIGHT * 2);
|
||||||
} if (displayMmap){
|
} if (displayMmap){
|
||||||
sprintf(debugString, "RAM: $%04X - $%04X\nROM: $%04X - $%04X\nVIAADDRS: $%04X\nKBDADDRS: $%04X\nVIDADDRS: $%04X", RAMLOC, RAMLOC + RAMSIZE, ROMLOC, ROMLOC + ROMSIZE, VIAADDRS, KBDADDRS, VIDADDRS);
|
sprintf(debugString, "RAM: $%04X - $%04X\nROM: $%04X - $%04X\nVIAADDRS: $%04X\nKBDADDRS: $%04X\nVIDADDRS: $%04X", RAMLOC, RAMLOC + RAMSIZE, ROMLOC, ROMLOC + ROMSIZE, VIAADDRS, KBDADDRS, VIDADDRS);
|
||||||
drawString(debugString, renderMemory, SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 2);
|
drawString(debugString, renderMemory, SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 1);
|
||||||
|
|
||||||
vStack += (FONT_HEIGHT * 6 * 2);
|
vStack += (FONT_HEIGHT * 6);
|
||||||
} if (showHelp) {
|
} if (showHelp) {
|
||||||
drawString(HELPKEYS, renderMemory, SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 2);
|
drawString(HELPKEYS, renderMemory, SDL_X_SIZE, 0x000000FF, 0xAAAAAAFF, 16, vStack, 1);
|
||||||
|
|
||||||
vStack += (FONT_HEIGHT * 2 * 2);
|
vStack += (FONT_HEIGHT * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (SDL_UpdateTexture(texture, NULL, renderMemory, (sizeof(uint32_t) * SDL_X_SIZE))) {
|
if (SDL_UpdateTexture(texture, NULL, renderMemory, (sizeof(uint32_t) * SDL_X_SIZE))) {
|
||||||
fprintf(stderr, "Could not update SDL texture: %s.\n", SDL_GetError());
|
fprintf(stderr, "Could not update SDL texture: %s.\n", SDL_GetError());
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
|
Loading…
Reference in New Issue
Block a user