Skip to content

Commit

Permalink
Version 4.8 Released! See readme for details.
Browse files Browse the repository at this point in the history
  • Loading branch information
wavemotion-dave committed Jan 24, 2024
1 parent 3f3a81f commit b5343b8
Show file tree
Hide file tree
Showing 12 changed files with 32 additions and 12 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ include $(DEVKITARM)/ds_rules

export TARGET := NINTV-DS
export TOPDIR := $(CURDIR)
export VERSION := 4.7f
export VERSION := 4.8

ICON := -b $(CURDIR)/logo.bmp "NINTV-DS $(VERSION);wavemotion-dave;https://github.com/wavemotion-dave/NINTV-DS"

Expand Down
Binary file modified NINTV-DS.nds
Binary file not shown.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,14 +107,15 @@ Credits :
--------------------------------------------------------------------------------
History :
--------------------------------------------------------------------------------
V4.8 : ??-????-2024 by wavemotion-dave
V4.8 : 24-Jan-2024 by wavemotion-dave
* .int files are now auto-detected as either .bin(+cfg) or .rom files. This allows you to rename .rom files or .bin files to .int and let Twilight Menu++ auto-launch Nintellivision.
* Slight improvement to the Intellivoice driver to give a minor boost in performance (mostly for DS-Lite/Phat).
* 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)
* Fix for intellivoice games so there are no more glitches on the updated version of Same Game and Robots.
* Fix for ecs games so they don't inadvertantly write over the last graphics card in memory (causing minor graphics corruption on some games)
* Correction of one intellivoice coefficient value (thanks to documentation in JZINTV) so voice games sound their best.
* Other minor tweaks and cleanup as time permitted.

Expand Down
Binary file modified arm9/gfx/bgTop.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 0 additions & 2 deletions arm9/source/emucore/AY38900.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1214,7 +1214,6 @@ ITCM_CODE BOOL AY38900::mobsCollide(int mobNum0, int mobNum1)

void AY38900::getState(AY38900State *state)
{
extern UINT16 stic_memory[0x40];
memcpy(state->registers, stic_memory, 0x40*sizeof(UINT16));
this->backtab.getState(&state->backtab);

Expand All @@ -1238,7 +1237,6 @@ void AY38900::getState(AY38900State *state)

void AY38900::setState(AY38900State *state)
{
extern UINT16 stic_memory[0x40];
memcpy(stic_memory, state->registers, 0x40*sizeof(UINT16));
this->backtab.setState(&state->backtab);

Expand Down
14 changes: 14 additions & 0 deletions arm9/source/emucore/Emulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,20 @@ void Emulator::LoadFastMemory()
}
}

void Emulator::RefreshFastMemory()
{
UINT16 *fast_memory = (UINT16 *)0x06860000; // LCD RAM area... slightly faster 16-bit access...

for (int i=0x0100; i<=0x01EF; i++)
{
fast_memory[i] = memoryBus.peek_slow_and_safe(i);
}
for (int i=0x0200; i<=0x035F; i++)
{
fast_memory[i] = memoryBus.peek_slow_and_safe(i);
}
}

// ---------------------------------------------------
// Apply Cheats before we read back the "fast memory"
// ---------------------------------------------------
Expand Down
1 change: 1 addition & 0 deletions arm9/source/emucore/Emulator.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ class Emulator : public Peripheral
void InitAudio(AudioMixer* audio, UINT32 sampleRate);
void ReleaseAudio();
void LoadFastMemory();
void RefreshFastMemory();
void ApplyCheats();

void Reset();
Expand Down
2 changes: 1 addition & 1 deletion arm9/source/emucore/GRAM.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -62,5 +62,5 @@ void GRAM::setState(GRAMState *state)
{
for (int i=0; i<GRAM_SIZE; i++) gram_image[i] = state->gram_image[i];
for (int i=0; i<(GRAM_SIZE>>3); i++) dirtyCards[i] = state->dirtyCards[i];
dirtyRAM = state->dirtyRAM;
dirtyRAM = TRUE;
}
5 changes: 1 addition & 4 deletions arm9/source/emucore/MOB.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ void MOB::setState(MOBState *state)
quadHeight = state->quadHeight;
flagCollisions = state->flagCollisions;
horizontalMirror = state->horizontalMirror;
horizontalMirror = state->verticalMirror;
verticalMirror = state->verticalMirror;
behindForeground = state->behindForeground;

boundingRectangle.x = state->mob_rect_x;
Expand All @@ -221,7 +221,4 @@ void MOB::setState(MOBState *state)
this->boundsChanged = TRUE;
this->shapeChanged = TRUE;
this->colorChanged = TRUE;

}


2 changes: 1 addition & 1 deletion arm9/source/emucore/MemoryBus.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -371,4 +371,4 @@ void MemoryBus::poke_cheat(UINT16 location, UINT16 value)
{
writeableMemorySpace[location>>4][i]->poke_cheat(location, value);
}
}
}
13 changes: 11 additions & 2 deletions arm9/source/savestate.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -134,17 +134,26 @@ BOOL do_load(const CHAR* filename, UINT8 slot)

global_frames = saveState.slot[slot].global_frames;
emu_frames = saveState.slot[slot].emu_frames;

// We need to run through all the last known banking writes and poke those back into the system
for (UINT8 i=0; i<16; i++)
{
gLastBankers[i] = saveState.slot[slot].lastBankers[i];
if (gLastBankers[i] != 0x0000)
{
// ----------------------------------------------------------------------------------------------------
// Sometimes poking values back in at xFFF will trigger a write to the last WORD in the GRAM memory
// due to aliases. We want to make sure we don't disturb that when we restore state as the original
// game programmer may have done this in a very careful way and here we're being very brute-force.
// ----------------------------------------------------------------------------------------------------
UINT16 save_gram = gram_image[GRAM_SIZE-1];
currentEmu->memoryBus.poke((i<<12)|0xFFF, gLastBankers[i]);
gram_image[GRAM_SIZE-1] = save_gram;
}
}

// Refresh the fast memory now that we've got it all loaded in...
currentEmu->RefreshFastMemory();

if (myGlobalConfig.erase_saves)
{
remove(savefilename);
Expand Down
Binary file modified extras.zip
Binary file not shown.

0 comments on commit b5343b8

Please sign in to comment.