kindred (emulator)

Discuss emulation of the Nintendo Entertainment System and Famicom.

Moderator: Moderators

Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

kindred (emulator)

Post by Overload »

kindred is a multi-system video game emulator for Windows. The software utilises a number of proprietary technologies to accurately emulate video games systems. kindred was formerly known as Super Sleuth prior to 1.05.

Latest Version: 1.12 (2019.11.11)

http://www.crazysmart.net.au/kindred

Features:

* Screen Capture in PNG format
* Code Inspector and single-step logging options
* PCB database with more than 4150 entries
* All accurate CPU cores are relevant at the microcode level or greater.
* Cycle accurate Save States [v1.09]
* Directdraw/Direct3D/OpenGL rendering options [v1.11]
* Custom streaming audio driver [v1.11]


Super Nintendo
----------------------
[Super Sleuth v1.00]

* Cycle accurate CPU/DMA/SA-1 CPU [v1.09]
* Cycle accurate SMP/DSP [v1.07]
* SPPU1/SPPU2 line-per-line render
* 128KB Backup RAM support
(Support for various backup formats)
* Support for various ROM formats
Super Magicom/Wildcard (Max 64Mbit)
Game Doctor Mode (Max 96Mbit)
* Support for Standard Controller,
Nintendo Scope and Mouse,
NTT Controller [v1.09]
* Super-FX
* Low-level coprocessor support
OBC1, DSP-1 [v1.04], DSP-2 [v1.04], DSP-3 [v1.04], CX4 [v1.04],
SETA-DSP [v1.04], RTC-4513 [v1.09], S-RTC [v1.09]
* Satellaview
* Complete BS Flash Memory Functions [v1.09]
(including lock bits, erase counters and undocumented commands)
* SPC7110 [v1.09] and S-DD1 decompression chips


Nintendo Entertainment System
-------------------------------------
[Super Sleuth v1.00]

* Cycle accurate APU/CPU/PPU
* Support for various Cartridge Types (including C*ROM, U*ROM, B*ROM, A*ROM, G*ROM,
S*ROM, P*ROM, T*ROM, F*ROM, H*ROM)
* Support for Standard Controller,
NTT Controller, TV-NET controller [v1.10]
* NINA Header support [v1.05]
* Tatio TC0690 [v1.06]
* Famicom Basic Keyboard [v1.06]
* Low-Level Famicom Disk operations [v1.06]
(includes timing, gaps, CRC's and lead-in)
* Bandai DATACH [v1.06]
* Famicom Data Recorder [v1.07]
* TV-NET [v1.10]


Nintendo Game Boy
------------------------
[kindred v1.07]

* Cycle accurate CPU
* Support for Mappers
MBC1, MBC2, MBC3, MBC5, MMMO1 (accurate), HUC1, HUC3, TAMA5, Pocket Camera


Sega Master System
--------------------------
[kindred v1.08]

* Cycle accurate CPU/VDP
* SEGA and Codemasters Memory Mapping
* Support for Standard Controllers


IBM PC XT
---------
[kindred v1.10]

* CPU/DMA/PIC/PIT/PPI
* up to 640K RAM
* Multi-format dual floppy drive
* MDA, CGA, EGA and VGA video
* XT-IDE (optional)
* Full 83 Key XT keyboard
* Microsoft Compatible Serial Mouse on COM1
* PC-Speaker (accurate)


IBM PC AT
---------
[kindred v1.11]

* CPU/DMA/PIC/PIT/RTC/Keyboard controller
* up to 5M RAM
* Multi-format dual floppy drive
* MDA, CGA, EGA and VGA video
* Dual IDE Hardrive
* Full 84 Key AT Keyboard
* Microsoft Compatible Serial Mouse on COM1
* PC-Speaker (accurate)


Pocket Challenge W
--------------------------
[kindred v1.12]

* Cycle accurate CPU
* Support for column drivers and LCD icons
* Programmable Pulse Generator
* Support for some multi-pack cartridges
Last edited by Overload on Thu Nov 21, 2019 12:10 am, edited 4 times in total.
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: kindred (emulator)

Post by Dwedit »

This is a first rate emulator, great job.
Ran everything I threw at it except Fire Hawk.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: kindred (emulator)

Post by koitsu »

Gave it a try. Something is quite wonky with keyboard-based input for movement; it seems holding down a key (Up/Down/Left/Right) causes some pretty severe issues. Games I tried included Jackal, Contra, and Karnov; the truck in Jackal would twitch/gradually move forward (move, stop, move, stop), the player in Contra would gradually move forward (move, stop, move, stop), while Karnov acted like he was having seizures and wouldn't move at all. However certain other games like Arkista's Ring seemed to behave mostly okay.

It's as if the code used for joypad input is "releasing" the button held every frame, because it happens very rapidly. I can't tell if this is a NES $4016/4017 emulation problem or an actual problem with your input routines in Windows. I'm thinking it's possibly a little bit of both, since games like Arkista's Ring just require you to tap U/D/L/R once to move that direction, while the other aforementioned games require you to actually hold the pad down.

Since there's no joypad support (that I can tell) I can't see if that works better.

System is Windows XP SP3 (32-bit), running DirectX 9.0c (dxdiag says 4.09.0000.0904). I am not using any crazy drivers (like Microsoft Intellipoint) that insert themselves into the keyboard driver input chain; everything is pure/raw USB HID.

I can make a video of the problem if needed; just ask.

Other things, probably minor:

- Does "Reset" actually do a 6502 reset (jump to reset vector, etc.), or is it a power-cycle?
- Looks like Control / Master Volume shows the "Mute" checkbox checked even though sound plays regardless; clicking "Mute" seems to have no effect, so maybe it's a no-op for the time being?

Otherwise looking very, very promising! *thumbs up* It's also nice to see a windowed-mode emulator doing Vsync properly (from what I can tell so far -- it would help if the input stuff above wasn't acting weird though, then I could try panning around and look for tearing). :-)
Near
Founder of higan project
Posts: 1553
Joined: Mon Mar 27, 2006 5:23 pm

Re: kindred (emulator)

Post by Near »

koitsu gave me the impression there was sound support, but it looks to be NES only still.
No SNES sound output is going to be a serious impediment to anyone ever using it for SNES emulation.
I can't reproduce the input problems here, so at least it's not a ubiquitous issue.
Surprised to see you haven't added the three uPD96050 ops for ST010 and ST011 support, given you have some of the best DSP LLE around.
Not surprised you skipped the ST018 ;)
Emboldening that you are embedding the firmware in your emulator. I'd definitely really like to distribute those, but the legal implications concern me. What are your thoughts on that?
Would like to hear more about the new 5A22 emulation mode findings, wondering if it's something I don't know about yet.
Like that the debugger is back. It's pretty limited (I have no debugger so I can't talk much), but sometimes useful.

Interesting that nobody mentioned NINA. Just a fair warning that this board is usually pretty hostile to alternate format discussions.
That said ... first, you didn't include ninja.exe in the tools folder.
Nice to see you can support Galaxian 64kbit PRG and Slappin' 32kbit CHR.
I really like your categorization for NES boards over the arbitrary mapper numbers. Especially the discrete logic 0xFx mappers. That has kicked my ass in the past.
Not sure if your database is just missing the game, but Contra (J) [VRC-n] doesn't seem to detect the pinout to avoid scrambled graphics. I have that issue when parsing raw iNES 1.0 as well (info just isn't there.)
My two cents, hoping to avoid a big nasty discussion ... I like NINA a lot more than iNES 2.0, but I still don't favor binary blob headers. If sets become popular for it, I'll support it.

Would be interested to hear your future GB/C/A/NDS plans. NDS especially, the thought of emulating that myself gives me nightmares.
Supporting the ST018 would probably greatly accelerate your GBA implementation efforts, for what it's worth :D
Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

Re: kindred (emulator)

Post by Overload »

koitsu wrote:Something is quite wonky with keyboard-based input for movement; it seems holding down a key (Up/Down/Left/Right) causes some pretty severe issues.
I was working on some experimental joystick code a while back and i think it might be causing the issue. I've disabled it and uploaded a new build, see if that helps.

http://www.crazysmart.net.au/kindred/fi ... d1r05a.zip
koitsu wrote:- Does "Reset" actually do a 6502 reset (jump to reset vector, etc.), or is it a power-cycle?
It does a master reset which in-turn resets any control module that has been installed (6502, PPU, MMC etc). If you want to power-cycle you will have to re-open the file.
koitsu wrote:- Looks like Control / Master Volume shows the "Mute" checkbox checked even though sound plays regardless; clicking "Mute" seems to have no effect, so maybe it's a no-op for the time being?
Fixed, clicking 'Mute' will now stop the audio transfer. SNES audio is broken.
koitsu wrote:Otherwise looking very, very promising! *thumbs up* It's also nice to see a windowed-mode emulator doing Vsync properly (from what I can tell so far -- it would help if the input stuff above wasn't acting weird though, then I could try panning around and look for tearing). :-)
It's been a long journey :)
User avatar
koitsu
Posts: 4201
Joined: Sun Sep 19, 2004 9:28 pm
Location: A world gone mad

Re: kindred (emulator)

Post by koitsu »

Overload wrote:
koitsu wrote:Something is quite wonky with keyboard-based input for movement; it seems holding down a key (Up/Down/Left/Right) causes some pretty severe issues.
I was working on some experimental joystick code a while back and i think it might be causing the issue. I've disabled it and uploaded a new build, see if that helps.

http://www.crazysmart.net.au/kindred/fi ... d1r05a.zip
Confirmed -- that version fixes the issue.

And yeah, re: Vsync: looks wonderful (no tearing). Awesome.
Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

Re: kindred (emulator)

Post by Overload »

byuu wrote:koitsu gave me the impression there was sound support, but it looks to be NES only still.
No SNES sound output is going to be a serious impediment to anyone ever using it for SNES emulation.
It's going to take a lot of time and effort to fix. I have to rewrite the entire S-APU module. It's a total mess, been more than 10 years since I last touched it.
byuu wrote:Surprised to see you haven't added the three uPD96050 ops for ST010 and ST011 support, given you have some of the best DSP LLE around.
Not surprised you skipped the ST018 ;)
Haven't had the time. ST010 is functional.
byuu wrote:Emboldening that you are embedding the firmware in your emulator. I'd definitely really like to distribute those, but the legal implications concern me. What are your thoughts on that?
It has to be proven that the firmware is embedded. When you make your emulator open source it makes it easy to prove ;)
byuu wrote:Would like to hear more about the new 5A22 emulation mode findings, wondering if it's something I don't know about yet.
Looks like CLI latency fixes.
byuu wrote:Like that the debugger is back. It's pretty limited (I have no debugger so I can't talk much), but sometimes useful.
Everytime I rewrite something I break the debugger :(
byuu wrote:Interesting that nobody mentioned NINA. Just a fair warning that this board is usually pretty hostile to alternate format discussions.
That said ... first, you didn't include ninja.exe in the tools folder.
I checked the zip and it was there?

otherwise...

http://www.crazysmart.net.au/kindred/files/ninja.exe
byuu wrote:Not sure if your database is just missing the game, but Contra (J) [VRC-n] doesn't seem to detect the pinout to avoid scrambled graphics. I have that issue when parsing raw iNES 1.0 as well (info just isn't there.)
My two cents, hoping to avoid a big nasty discussion ... I like NINA a lot more than iNES 2.0, but I still don't favor binary blob headers. If sets become popular for it, I'll support it.
Haven't updated to iNES 2.0 yet, give me a break :)
byuu wrote:Would be interested to hear your future GB/C/A/NDS plans. NDS especially, the thought of emulating that myself gives me nightmares.
Supporting the ST018 would probably greatly accelerate your GBA implementation efforts, for what it's worth :D
Definately GB/GBC and GBA. Hopefully with all the new framework i've been working on over the last two years adding these be a breeze.
Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

Re: kindred (emulator)

Post by Overload »

kindred v1.06 Preview Build 1

[FDS] Added Famicom Disk Drive
[FDS] Added RAM Adapter
[NES] Many Picture Processing updates
[NES] Updated Audio Sequencer
[NES] Added custom mapper (Bandai DATACH)
[NES] Added Famicom Basic Keyboard
[NES] Updated WRAM power-on default (fixes Minna no Tabo, River City Ransom)
[ALL] Added Joystick support (Preliminary)
[ALL] Rewrote virtual device system
[NES] Added Bus Conflicts
[NES] Added Save State system (Preliminary)
[NES] Added custom mapper (Taito TC0690)
[NES] Added board (SZROM)
[NES] Updated SRAM initialization (fixes Famicom Wars)
[SFC] Added board (SHVC-2K0N)
Updated kindred.db
Updated ninja.exe

http://www.crazysmart.net.au/kindred/fi ... ed1r06.zip
http://www.crazysmart.net.au/kindred

There's most likely loads more fixes and improvements I forgotten about :)
AnnaWu
Posts: 23
Joined: Sun Oct 07, 2012 12:31 am

Re: kindred (emulator)

Post by AnnaWu »

kindred v1.06 Preview Build 1

Is the SNES audio is still broken or not supported?
User avatar
Dwedit
Posts: 4924
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: kindred (emulator)

Post by Dwedit »

Avast thinks it's a virus.
Or at least thinks the download URL is a virus, but doesn't mind the actual ZIP or EXE files.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!
Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

Re: kindred (emulator)

Post by Overload »

AnnaWu wrote:kindred v1.06 Preview Build 1

Is the SNES audio is still broken or not supported?
Sorry, the audio code is still broken.

The SPC700 code is enabled, the DSP code is disabled.
Overload
Posts: 47
Joined: Mon May 30, 2011 4:38 pm
Location: Australia
Contact:

Re: kindred (emulator)

Post by Overload »

This is the biggest update since 2004. :beer:

kindred 1.07 Preview Build 1 (Windows, 32-Bit)

http://www.crazysmart.net.au/kindred/fi ... ed1r07.zip

[SFC] Rewrote S-DSP module
[SFC] Rewrote SPC700 module
[SFC] Updated SA-1 instruction set
[SFC] Fixed SA-1 interrupt detection
[SFC] Fixed SA-1 8-bit character DMA
[SFC] Rewrote Super FX module
[SFC] Added Super FX Cache RAM
[SFC] Fixed Super-FX PLOT and RPIX
[SFC] Fixed Super-FX register map
[SFC] Partial S-CPU conversion to new scheduler
[DMG] Added Gameboy Classic
[DMG] Added MBC1, MBC2, MBC3, MBC5 mappers
[DMG] Added MMMO1 mapper
[DMG] Added TAMA5 mapper
[DMG] Added HUC1, HUC3 mappers
[DMG] Added Pocket Camera mapper
[DMG] Added dmg.pal
[DMG] Added dmg.rom
[DMG] Added dmg.ram
[ALL] Fixed Pause operation
[ALL] Updated kindred.db
[ALL] Updated tools\ninja.exe

http://www.crazysmart.net.au/kindred
nIghtorius
Posts: 54
Joined: Tue Apr 29, 2014 1:31 pm

Re: kindred (emulator)

Post by nIghtorius »

a fellow Delphi developer :)

It is already very compatible :) * congrats *
But is seems quite CPU hungry. 13/14% CPU (Core i7 4790k) meaning one core is at least 100% constantly. Are you polling the high accuracy timer? I sync with NTSC games to VSYNC, bringing down the CPU utilization to 3%. PAL games I also need to use the HAT. If someone knows how to use the high accuracy timer without polling constantly. Please tell so.

Delphi XE6 has support for Direct2D.
tepples
Posts: 22708
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: kindred (emulator)

Post by tepples »

nIghtorius wrote:I sync with NTSC games to VSYNC
Which might not work if someone has a 75 Hz monitor. Or is failure to support non-60 Hz monitors considered "acceptable collateral damage" nowadays?
If someone knows how to use the high accuracy timer without polling constantly.
If there are more than 3 ms before vblank, is there a way to sleep for 1 ms at a time, some counterpart to usleep?
nIghtorius
Posts: 54
Joined: Tue Apr 29, 2014 1:31 pm

Re: kindred (emulator)

Post by nIghtorius »

tepples wrote:
nIghtorius wrote:I sync with NTSC games to VSYNC
Which might not work if someone has a 75 Hz monitor. Or is failure to support non-60 Hz monitors considered "acceptable collateral damage" nowadays?
No actually @ 75hz it will enable the HAT timer again with NTSC games at the cost of hefty cpu usage.
Post Reply