Version 4.7e with fixes for save/restore state on a few games including any games with latched backtabs (Stampede, Masters of the Universe)

This commit is contained in:
Dave Bernazzani 2024-01-22 20:44:25 -05:00
parent 35e6fa69f4
commit 8a96f907c4
7 changed files with 16 additions and 19 deletions

View File

@ -14,7 +14,7 @@ include $(DEVKITARM)/ds_rules
export TARGET := NINTV-DS
export TOPDIR := $(CURDIR)
export VERSION := 4.7d
export VERSION := 4.7e
ICON := -b $(CURDIR)/logo.bmp "NINTV-DS $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/NINTV-DS"

Binary file not shown.

View File

@ -114,6 +114,7 @@ V4.8 : ??-????-2024 by wavemotion-dave
* Added new keyclick enable option in Configuration (page 2) that produces the typical Intellivision keyclick when you press the 12-button keypad (on the DS lower screen).
* Added a new level of sound quality 'Ultimate'. The default for the DSi and above is still 'High' as 'Ultimate' consumes significant CPU time but you can enable it on a per-game basis for some of the more simple games (e.g. Astrosmash, Beauty and the Beast, AD&D Tarmin, etc)
* DS-Lite now enables Intellivoice on World Series Major League Baseball - sound quality is a bit rough on the older handheld but very playalbe.
* Fixed save/restore state including when backtab latched is TRUE (Stampede, Masters of the Universe)
* Other minor tweaks and cleanup as time permitted.
V4.7 : 19-Jan-2024 by wavemotion-dave

View File

@ -1259,6 +1259,7 @@ void AY38900::setState(AY38900State *state)
mobs[i].setState(&state->mobs[i]);
}
// Force the screen to redraw
this->colorModeChanged = TRUE;
this->colorStackChanged = TRUE;
}

View File

@ -92,25 +92,20 @@ ITCM_CODE void BackTabRAM::markCleanLatched()
// -----------------------------------------------------------------------------------
void BackTabRAM::getState(BackTabRAMState *state)
{
for (int i=0; i<BACKTAB_SIZE; i++) state->image[i] = (myConfig.bLatched ? bt_imageLatched[i] : bt_image[i]);
for (int i=0; i<BACKTAB_SIZE; i++) state->dirtyBytes[i] = (myConfig.bLatched ? dirtyBytes[i] : dirtyBytesLatched[i]);
for (int i=0; i<BACKTAB_SIZE; i++) state->image[i] = bt_image[i];
for (int i=0; i<BACKTAB_SIZE; i++) state->dirtyBytes[i] = dirtyBytes[i];
state->dirtyRAM = dirtyRAM;
state->colorAdvanceBitsDirty = colorAdvanceBitsDirty;
}
void BackTabRAM::setState(BackTabRAMState *state)
{
if (myConfig.bLatched)
{
for (int i=0; i<BACKTAB_SIZE; i++) bt_imageLatched[i] = state->image[i];
for (int i=0; i<BACKTAB_SIZE; i++) dirtyBytesLatched[i] = state->dirtyBytes[i];
}
else
{
for (int i=0; i<BACKTAB_SIZE; i++) bt_image[i] = state->image[i];
for (int i=0; i<BACKTAB_SIZE; i++) dirtyBytes[i] = state->dirtyBytes[i];
}
dirtyRAM = state->dirtyRAM;
colorAdvanceBitsDirty = state->colorAdvanceBitsDirty;
for (int i=0; i<BACKTAB_SIZE; i++) bt_image[i] = bt_imageLatched[i] = state->image[i];
for (int i=0; i<BACKTAB_SIZE; i++) dirtyBytes[i] = dirtyBytesLatched[i] = state->dirtyBytes[i];
// Just force the redraw...
dirtyRAM = TRUE;
colorAdvanceBitsDirty = TRUE;
}

View File

@ -59,7 +59,7 @@ void JLP::tick_one_second(void)
UINT16 JLP::peek(UINT16 location)
{
if (location == 0x9FFE) {return (UINT16)random();}
return jlp_ram[(location&readAddressMask) - this->location];
return jlp_ram[location&0x1FFF];
}
UINT32 JLP::crc16(UINT16 data, UINT16 crc)
@ -204,9 +204,9 @@ void JLP::poke(UINT16 location, UINT16 value)
if ((location >= 0x8040))
{
jlp_ram[(location&writeAddressMask)-this->location] = value;
jlp_ram[location & 0x1FFF] = value;
}
/* -------------------------------------------------------------------- */
/* Check for mult/div writes */
/* $9F8(0,1): s16($9F80) x s16($9F81) -> s32($9F8F:$9F8E) */

View File

@ -203,7 +203,7 @@ void MOB::setState(MOBState *state)
cardNumber = state->cardNumber;
collisionRegister = state->collisionRegister;
isGrom = state->isGrom;
isGrom = state->isVisible;
isVisible = state->isVisible;
doubleWidth = state->doubleWidth;
doubleYResolution = state->doubleYResolution;
doubleHeight = state->doubleHeight;