ref: ccc90b4d065c3e2287161bc679109f7aa7816c10
parent: 770779a82df86d8f2f8e3d295bb148fe9ed741c9
author: allkern <lisandroaalarcon@gmail.com>
date: Tue Aug 13 13:13:12 EDT 2024
Add CDROM reset API
--- a/psx/dev/bios.c
+++ b/psx/dev/bios.c
@@ -18,6 +18,9 @@
}
void psx_bios_load(psx_bios_t* bios, const char* path) {
+ if (!path)
+ return;
+
FILE* file = fopen(path, "rb");
if (!file) {
--- a/psx/dev/cdrom/cdrom.c
+++ b/psx/dev/cdrom/cdrom.c
@@ -153,6 +153,29 @@
cdrom->fake_getlocl_data = 1;
}
+void psx_cdrom_reset(psx_cdrom_t* cdrom) {+ queue_clear(cdrom->data);
+ queue_clear(cdrom->response);
+ queue_clear(cdrom->parameters);
+
+ cdrom->prev_state = CD_STATE_IDLE;
+ cdrom->state = CD_STATE_IDLE;
+ cdrom->pending_command = 0;
+ cdrom->busy = 0;
+ cdrom->cdda_playing = 0;
+ cdrom->xa_playing = 0;
+ cdrom->read_ongoing = 0;
+
+ queue_clear(cdrom->data);
+ queue_clear(cdrom->response);
+ queue_clear(cdrom->parameters);
+
+ cdrom->vol[0] = 0x80;
+ cdrom->vol[1] = 0x00;
+ cdrom->vol[2] = 0x80;
+ cdrom->vol[3] = 0x00;
+}
+
void psx_cdrom_set_version(psx_cdrom_t* cdrom, int version) {cdrom->version = version;
}
@@ -165,6 +188,8 @@
if (!path)
return;
+ cdrom_cmd_reset(cdrom);
+
cdrom->disc = psx_disc_create();
cdrom->disc_type = psx_disc_open(cdrom->disc, path);
@@ -609,6 +634,9 @@
void psx_cdrom_destroy(psx_cdrom_t* cdrom) {psx_cdrom_close(cdrom);
+ queue_destroy(cdrom->data);
+ queue_destroy(cdrom->response);
+ queue_destroy(cdrom->parameters);
free(cdrom);
}
--- a/psx/dev/cdrom/cdrom.h
+++ b/psx/dev/cdrom/cdrom.h
@@ -292,6 +292,7 @@
psx_cdrom_t* psx_cdrom_create(void);
void psx_cdrom_init(psx_cdrom_t* cdrom, psx_ic_t* ic);
+void psx_cdrom_reset(psx_cdrom_t* cdrom);
void psx_cdrom_set_version(psx_cdrom_t* cdrom, int version);
void psx_cdrom_set_region(psx_cdrom_t* cdrom, int region);
void psx_cdrom_open(psx_cdrom_t* cdrom, const char* path);
--- a/psx/dev/gpu.h
+++ b/psx/dev/gpu.h
@@ -18,7 +18,7 @@
#define PSX_GPU_FB_STRIDE 2048
// 0x100000 * 2
-#define PSX_GPU_VRAM_SIZE (0x100000)
+#define PSX_GPU_VRAM_SIZE (0x200000)
#define PSX_GPU_CLOCK_NTSC 53693175 // 53.693175 MHz
#define PSX_GPU_CLOCK_FREQ_NTSC 53.693175f // 53.693175 MHz
--- a/psx/psx.h
+++ b/psx/psx.h
@@ -7,6 +7,10 @@
#include <stdint.h>
+#define PSXE_VERSION STR(REP_VERSION)
+#define PSXE_COMMIT STR(REP_COMMIT_HASH)
+#define PSXE_BUILD_OS STR(OS_INFO)
+
typedef struct {
psx_bios_t* bios;
psx_ram_t* ram;
--
⑨