Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new NOT WORKING machines (Tomy Kiss-Site) + preliminary MIPS-X disassembler #12331

Merged
merged 30 commits into from
May 8, 2024

Conversation

mamehaze
Copy link
Contributor

@mamehaze mamehaze commented May 1, 2024

new NOT WORKING machines

Kiss-Site [TeamEurope]

new NOT WORKING software list entries

kisssite_cd.xml:
Anime Karaoke Series - Pocket Monsters 1 (Japan) [redump.org]
Dance Karaoke Series 01 - Mickey Mouse March - Eurobeat Version and White Love (Japan) [redump.org]
Dance Karaoke Series 02 - LOVE Machine and Goldfinger '99 (Japan) [redump.org]
Dance Karaoke Series 03 - Happy Summer Wedding and Nanda Kanda (Japan) [redump.org]
Dance Karaoke Series 04 - Koi no Dance Site and Night of Fire (Japan) [redump.org]
Dance Karaoke Series 05 - Fly High - Euro-Power Mix and Respect the Power of Love (Japan) [redump.org]
Dance Karaoke Series 06 - Chokotto Love and My Graduation (Japan) [redump.org]
Dance Karaoke Series 07 - Daite Hold on Me! and Try Me - Watashi o Shinjite (Japan) [redump.org]
Dance Karaoke Series 08 - Akai Nikkichou and Time After Time (Japan) [redump.org]
Dance Karaoke Series 09 - Kiiroi Osora de Boom Boom Boom and Don't Wanna Cry (Japan) [redump.org]
Dance Karaoke Series 10 - Manatsu no Kousen and A Walk in the Park (Japan) [redump.org]
Dance Karaoke Series 11 - Com'on! Be My Girl! and Crazy Beat Goes On! (Japan) [redump.org]
Dance Karaoke Series 12 - Kore ga Watashi no Ikiru Michi and Ai no Shirushi (Japan) [redump.org]
Dance Karaoke Series 13 - UFO and Southpaw (Japan) [redump.org]
Dance Karaoke Series 14 - Body and Soul and Long Way Home (Japan) [redump.org]
Dance Karaoke Series 15 - Steady and Alive (Japan) [redump.org]
Dance Karaoke Series 16 - Wake Me Up! and Timing (Japan) [redump.org]
Dance Karaoke Series 17 - Red Beat of My Life and Bright Daylight (Japan) [redump.org]
Dance Karaoke Series 18 - Nakatta Koto ni Shite and Otome Pasta ni Kandou (Japan) [redump.org]
Dance Karaoke Series 19 - Ride on Time and Give Me a Shake (Japan) [redump.org]
Dance Karaoke Series 20 - Love 2000 and Seishun Jidai 1.2.3! (Japan) [redump.org]
Dance Karaoke Series 21 - I Wish and Luv Is Magic (Japan) [redump.org]
Dance Karaoke Series 22 - Barashoku no Hibi and Ginga no Chikai (Japan) [redump.org]
Dance Karaoke Series 23 - Please Smile Again and Treasure (Japan) [redump.org]
Dance Karaoke Series 24 - Koi wa Thrill, Shock, Suspense and Love is Energy! (Japan) [redump.org]
Dance Karaoke Series 25 - Renai Revolution 21 and S.O.S (Japan) [redump.org]
Dance Karaoke Series - Best Selection (Japan) [redump.org]
Movie Karaoke Series - Best Selection - Ballade 1 (Japan) [redump.org]
Oha Star Series 01 - Zonapara (Japan) [redump.org]
Oha Star Series 02 - Oha Ska! (Japan) [redump.org]

  • added preliminary MIPS-X disassembler, so that the kisssite code can be studied [David Haywood]

@mamehaze mamehaze changed the title new NOT WORKING machines (Tomy Kiss-Site) new NOT WORKING machines (Tomy Kiss-Site) + preliminary MIPS-X disassembler May 2, 2024
@mamehaze
Copy link
Contributor Author

mamehaze commented May 2, 2024

This could probably do with some tidy-ups (and fixes), but it satisfies one of the criteria I aim for when adding a skeleton - making sure to hook up a CPU and having code visible.

We need to determine if the ROM contains all the code, or if there is something internal. It's unlikely I'll work on an execution core for this one, as it will require full pipeline emulation as the CPU doesn't have any kind of stall mechanism if you access something that isn't ready yet, or shouldn't be accessed.

There's a single co-processor opcode that appears to be used in a form not fully described in the manual (although the manual does seem to hint that it would have an effect in certain situations) (movtoc is used with a src1 value that isn't 0)

Copy link
Contributor

@pmackinlay pmackinlay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code seems a bit more obfuscated, verbose and less efficient than necessary, and would benefit from another pass to address the suggestions. While I haven't analyzed the instruction encoding in detail, I suspect broadening the primary opcode mask would reduce the number of special cases required to handle invalid instructions and improve robustness.

src/devices/cpu/mipsx/mipsx.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsx.h Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
@mamehaze
Copy link
Contributor Author

mamehaze commented May 3, 2024

feedback has been addressed. The current structure is based on how things are divided up in the instruction set manual (first by TY field, then by COND field) I was previously lambasted for not following the structure in a manual rigidly, so I've made sure to here.

Copy link
Contributor

@pmackinlay pmackinlay left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My opinion is still that this code is much longer than necessary (especially with the unusual use of blocks inside every case label) and may benefit significantly from using a table-based decoding approach (or at least widening the primary mask). Page 71 of the linked document gives a good idea of what might be achieved.

src/devices/cpu/mipsx/mipsx.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsx.h Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.h Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
src/devices/cpu/mipsx/mipsxdasm.cpp Outdated Show resolved Hide resolved
@mamehaze
Copy link
Contributor Author

mamehaze commented May 6, 2024

I'll address the direct feedback, but I'd rather not rework the entire structure here.

If somebody else wants to write a core later I don't mind. If there's 0 chance of it being merged with the current structure I'll just remove the disassembler core and leave it as a pure skeleton.

@mamehaze
Copy link
Contributor Author

mamehaze commented May 7, 2024

all direct feedback has been addressed

@pmackinlay pmackinlay merged commit 37c3bbb into mamedev:master May 8, 2024
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants