Skip to content

Commit 2e539b3

Browse files
committed
gpgx: fix invalid system checks
- closes #4324
1 parent eade364 commit 2e539b3

File tree

2 files changed

+16
-29
lines changed

2 files changed

+16
-29
lines changed

Assets/dll/gpgx.wbx.zst

29 Bytes
Binary file not shown.

waterbox/gpgx/cinterface/cinterface.c

Lines changed: 16 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ GPGX_EX void gpgx_clear_sram(void)
294294
if (sram.on)
295295
memset(sram.sram, 0xff, 0x10000);
296296

297-
if (cdd.loaded)
297+
if (system_hw == SYSTEM_MCD)
298298
{
299299
// clear and format bram
300300
memset(scd.bram, 0, 0x2000);
@@ -331,24 +331,19 @@ GPGX_EX void* gpgx_get_sram(int *size)
331331
*size = saveramsize();
332332
return sram.sram;
333333
}
334-
else if (cdd.loaded && scd.cartridge.id)
334+
else if (system_hw == SYSTEM_MCD && scd.cartridge.id)
335335
{
336336
int sz = scd.cartridge.mask + 1;
337337
memcpy(tempsram, scd.cartridge.area, sz);
338338
memcpy(tempsram + sz, scd.bram, 0x2000);
339339
*size = sz + 0x2000;
340340
return tempsram;
341341
}
342-
else if (cdd.loaded)
342+
else if (system_hw == SYSTEM_MCD)
343343
{
344344
*size = 0x2000;
345345
return scd.bram;
346346
}
347-
else if (scd.cartridge.id)
348-
{
349-
*size = scd.cartridge.mask + 1;
350-
return scd.cartridge.area;
351-
}
352347
else
353348
{
354349
*size = 0;
@@ -365,7 +360,7 @@ GPGX_EX int gpgx_put_sram(const uint8 *data, int size)
365360
memcpy(sram.sram, data, size);
366361
return 1;
367362
}
368-
else if (cdd.loaded && scd.cartridge.id)
363+
else if (system_hw == SYSTEM_MCD && scd.cartridge.id)
369364
{
370365
int sz = scd.cartridge.mask + 1;
371366
if (size != sz + 0x2000)
@@ -374,21 +369,13 @@ GPGX_EX int gpgx_put_sram(const uint8 *data, int size)
374369
memcpy(scd.bram, data + sz, 0x2000);
375370
return 1;
376371
}
377-
else if (cdd.loaded)
372+
else if (system_hw == SYSTEM_MCD)
378373
{
379374
if (size != 0x2000)
380375
return 0;
381376
memcpy(scd.bram, data, size);
382377
return 1;
383378
}
384-
else if (scd.cartridge.id)
385-
{
386-
int sz = scd.cartridge.mask + 1;
387-
if (size != sz)
388-
return 0;
389-
memcpy(scd.cartridge.area, data, size);
390-
return 1;
391-
}
392379
else
393380
{
394381
if (size != 0)
@@ -512,10 +499,10 @@ GPGX_EX const char* gpgx_get_memdom(int which, void **area, int *size)
512499
}
513500
else return NULL;
514501
case 2:
515-
if (!cdd.loaded)
502+
if (system_hw != SYSTEM_MCD)
516503
{
517-
*area = ext.md_cart.rom;
518-
*size = ext.md_cart.romsize;
504+
*area = cart.rom;
505+
*size = cart.romsize;
519506
if ((system_hw & SYSTEM_PBC) == SYSTEM_MD)
520507
{
521508
return "MD CART";
@@ -533,47 +520,47 @@ GPGX_EX const char* gpgx_get_memdom(int which, void **area, int *size)
533520
}
534521
else return NULL;
535522
case 3:
536-
if (cdd.loaded)
523+
if (system_hw == SYSTEM_MCD)
537524
{
538525
*area = scd.bootrom;
539526
*size = 0x20000;
540527
return "CD BOOT ROM";
541528
}
542529
else return NULL;
543530
case 4:
544-
if (cdd.loaded)
531+
if (system_hw == SYSTEM_MCD)
545532
{
546533
*area = scd.prg_ram;
547534
*size = 0x80000;
548535
return "CD PRG RAM";
549536
}
550537
else return NULL;
551538
case 5:
552-
if (cdd.loaded)
539+
if (system_hw == SYSTEM_MCD)
553540
{
554541
*area = scd.word_ram[0];
555542
*size = 0x20000;
556543
return "CD WORD RAM[0] (1M)";
557544
}
558545
else return NULL;
559546
case 6:
560-
if (cdd.loaded)
547+
if (system_hw == SYSTEM_MCD)
561548
{
562549
*area = scd.word_ram[1];
563550
*size = 0x20000;
564551
return "CD WORD RAM[1] (1M)";
565552
}
566553
else return NULL;
567554
case 7:
568-
if (cdd.loaded)
555+
if (system_hw == SYSTEM_MCD)
569556
{
570557
*area = scd.word_ram_2M;
571558
*size = 0x40000;
572559
return "CD WORD RAM (2M)";
573560
}
574561
else return NULL;
575562
case 8:
576-
if (cdd.loaded)
563+
if (system_hw == SYSTEM_MCD)
577564
{
578565
*area = scd.bram;
579566
*size = 0x2000;
@@ -589,7 +576,7 @@ GPGX_EX const char* gpgx_get_memdom(int which, void **area, int *size)
589576
}
590577
else if (system_bios & (SYSTEM_SMS | SYSTEM_GG))
591578
{
592-
*area = &ext.md_cart.rom[0x400000];
579+
*area = &cart.rom[0x400000];
593580
*size = sms_cart_bootrom_size();
594581
return "BOOT ROM";
595582
}
@@ -759,7 +746,7 @@ void CDLog68k(uint addr, uint flags)
759746

760747
//apply memory map to process rom address
761748
unsigned char* block64k = m68k.memory_map[((addr)>>16)&0xff].base;
762-
749+
763750
//outside the ROM range. complex mapping logic/accessories; not sure how to handle any of this
764751
if(block64k < cart.rom || block64k >= cart.rom + cart.romsize)
765752
return;

0 commit comments

Comments
 (0)