Guitar Hero clone brainstorming

Want to create a team or share a project ?

Moderator: Mask of Destiny

Post Reply
LocalH
Very interested
Posts: 152
Joined: Tue Dec 19, 2006 5:04 pm

Guitar Hero clone brainstorming

Post by LocalH » Sun Feb 03, 2008 7:41 pm

Ok, here's what I was thinking the other day:

For control schemes, we basically have three possibilities:
1) Standard 6-button controller implemented like the Dualshock method of playing. GH requires ony seven buttons when done in this fashion (five frets, start and select). The original game also uses one of the analog sticks for whammy - for this we could use one more button and have the game handle a smooth transition from no whammy to full whammy
2) Physically hack a GH controller and wire it up to a standard 6 button pad. The only hard point here would be interfacing the whammy bar, and you wouldn't have a lot of resolution anyway. GH with a guitar needs 9 buttons (technically 10 but we can consolidate the tilt sensor and the select button fo our purpose). You have the same seven as used with the Dualshock but you also have up and down strum. This leaves 2 buttons left over for whammy support, leaving four levels of analog whammy position, which isn't really a whole lot. It'd work but the game would have to somehow interpolate between the positions and it would be a little funky. Between this method and method #1 the game wouldn't automatically know the difference and so it would have to be an option.
3) Design a PSX->MD adapter with special support for guitars. This would allow you the full range of 16 bits that you get with an otherwise standard 6-button gamepad poll. The adapter would be the best way to handle it - it doesn't require physical modification of the controller, it would allow standard Dualshocks to be used with Genesis games as well, and when a guitar is plugged up it could switch into guitar mode and give you 128 levels of whammy position (9 buttons out of 16 bits leaves 7 bits). Plus, the adapter could be designed to respond to a certain output from the Genesis that a regular pad would ignore, and thus the game could automatically detect the adapter and disable the option between the first two control methods unless there's a regular gamepad hooked up into port 2 (yes, I want two player support :) )

As far as implementation goes, I was thinking the best way to handle the songs would be to have them written specifically for the game. Dedicate two FM channels to the tracks that would drop out, channel 0 for player 1 and channel 1 for player 2. Modify SMPS to check on each frame two flags that indicate whether each of those channels should be played or not - if the flag is set, turn the TL of that channel down to 0, otherwise turn it up to whatever the track requires. We could modify SMPS to use a single song and vector it's pointer through RAM, which we can then modify with the absolute pointer that we'd store in the 7th page of ROM (metadata).

For the chart, we can use a tool already used in the GH customs scene called Feedback (also known as dB) - this way, more people would be likely to be willing to make customs and we'd already have a large number of charts that would only require music to be made for them. To make things more simple for people we'd need to develop a small audio-only Genesis emulator that can essentially play raw SMPS binaries, which we'd then output to an OGG file for use in dB's chart creation process, because it would be unreasonable to ask the author of dB to add such an emulator.

To allow people to build their own ROMs, we'd need to supply a tool that would take a base ROM, the charts and song binaries, and build the necessary metadata and song pages. dB already supports the entering of song and artist titles for a chart so we could just pull from that. The tool would convert the .chart format to our native format (which I'm thinking should be frame-based for ease of implementation) and would keep track of how much ROM is taken up - if we try to add a song and it would push the ROM into a 65th page then warn the user that they don't have room and disallow it.

Thoughts on the native chart format - the actual notes only require 7 bits - 5 for each fret button, one to denote whether it's a star power note, and one to determine whether it's a hammeron/pulloff note. However, once again for ease of implementation I propose adding two bits to that to denote whether a note is on a beat or measure line for display purposes. We'd also need a list of frame counts for each measure for star power depletion use (since the game depletes star power by measure and not by time). The advantage of using a frame-based format is that our ROM generation tool could have a PAL/NTSC toggle which would modify the base ROM to make SMPS play at the right speed, and would modify the chart conversion based on 50/60fps. It would probably also be a smart idea to display on either the title screen or menu whether the ROM is PAL or NTSC.

I've got a few things to go do so I'll leave this thread here for right now and let people contribute their ideas on what I've posted so far or on things I haven't posted about yet (such as how we'd implement the core engine or the visuals). When I get back I'll respond to any replies and continue detailing my ideas.

Jorge Nuno
Very interested
Posts: 374
Joined: Mon Jun 11, 2007 3:09 am
Location: Azeitão, PT

Post by Jorge Nuno » Sun Feb 03, 2008 8:51 pm

That project is using with the cart in the topic below?

To detect a custom joystick, you can send a bit sequence through the Select pin and the controller puts that sequence in, for example d0, something like: what-you-send-is-what-you-get-back

PSX to MD needs a microcontroller between them

Chilly Willy
Very interested
Posts: 2984
Joined: Fri Aug 17, 2007 9:33 pm

Post by Chilly Willy » Mon Feb 04, 2008 4:00 am

Like I said in the cart thread, if you made a USB port for the MD, you could use many different controllers with common USB adapters. That would probably be the best way to handle it. I've seen USB carts for the Atari 400/800, and that's a 1.79 MHz 6502, not a 7.7 MHz 68000. It handles keyboards, mice, and joysticks just fine. I'll try to dig up the url for the site showing the Atari USB cart if you want.

LocalH
Very interested
Posts: 152
Joined: Tue Dec 19, 2006 5:04 pm

Post by LocalH » Mon Feb 04, 2008 6:18 am

That would be a good idea for an additional option. I don't really care about PS3 controller support since there's only one guitar and it doesn't really have a good reputation but it'd be nice for people who own a 360 Xplorer or Les Paul to be able to use it. I don't think it would help for the PS2 controllers unless the adapter has a "dance mode" setting that puts the dpad on the POV hat and the analog stick on axis 0. I think a combination of a USB port and a PSX adapter would be the most compatible solution.

TmEE co.(TM)
Very interested
Posts: 2440
Joined: Tue Dec 05, 2006 1:37 pm
Location: Estonia, Rapla City
Contact:

Post by TmEE co.(TM) » Mon Feb 04, 2008 8:02 am

can't you just interface the PSx controller to MD like its done with some Parallel Port adaptors ? MD controller ports are pretty nice...
Mida sa loed ? Nagunii aru ei saa ;)
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen

Jorge Nuno
Very interested
Posts: 374
Joined: Mon Jun 11, 2007 3:09 am
Location: Azeitão, PT

Post by Jorge Nuno » Mon Feb 04, 2008 11:24 am

Ahhh USB Controllers... That will be super complicated, because the cart was supposed to act as "slave" device (to copy to the card), and to support controllers it needs to be a master, and throw in some drivers (inside the FPGA?) to support them all...

Its just that a SDRAM/DDRI/DDRII memory controller is piece of cake (which itself is a pain in the ass) compared to that USB implementation...

LocalH
Very interested
Posts: 152
Joined: Tue Dec 19, 2006 5:04 pm

Post by LocalH » Mon Feb 04, 2008 11:35 am

TmEE co.(TM) wrote:can't you just interface the PSx controller to MD like its done with some Parallel Port adaptors ? MD controller ports are pretty nice...
I don't think that would work that well because of the nature of the PSX controller interface. The reason it works on a parport adapter is because there's no pre-existing standard for things like that, whereas the MD controller ports are defined in a certain way in terms of software access and the necessary adapter would have a microcontroller to read the output of the PSX controller and send it to the Genesis in the way that most software would expect (and there's no reason to go outside this standard as you can then use standard 6-button polling routines and just interpret the data differently instead of having to write your own custom polling). The advantage of using a microcontroller would be support for both standard Dualshocks for use with any Genesis game, as well as specialized guitar support for this clone. If you just connected the PSX connector to the Genesis DE-9 then it would only be useful for the guitar and nothing more, and the added Dualshock support would make it more of a sensible investement for the hardcore GH fan who has a Genesis.

Of course, to make it even more widespread we'd need some sort of emulator support for our unique guitar support (which 360 owners could easily make use of with their USB controllers, and PS2 owners with adapters that support "dance mode" or those who own a wireless Kramer could make use of - the Kramer has a second mode that you can enable with the adapters by holding start+select and strumming down, that I've found puts the strum bar on the POV hat and leaves axis 0 for the whammy).

Fonzie
Genny lover
Posts: 323
Joined: Tue Aug 29, 2006 11:17 am
Contact:

Post by Fonzie » Mon Feb 04, 2008 7:37 pm

With pascal, we chatted a lot about a similar project :) We figured out a trick to let u upload/play your new tracks to the megadrive with a simple "nameofthethingremoved" HAHA, I'll let pascal explain if he dare, so crazy! :)

Chilly Willy
Very interested
Posts: 2984
Joined: Fri Aug 17, 2007 9:33 pm

Post by Chilly Willy » Mon Feb 04, 2008 9:20 pm

TmEE co.(TM) wrote:can't you just interface the PSx controller to MD like its done with some Parallel Port adaptors ? MD controller ports are pretty nice...
The PSX uses a 250 kbps synchronous serial interface. While the timing can vary quite a bit, it needs to be close to 250 kbps or many peripherals won't work with it. The enhancements for the PS2 run at 500 kbps.

While you might be able to make that work with the Genesis port, it'll probably consume all CPU time while doing transfers. You'd really need to make some kind of serial interface to make it worthwhile on the Genesis. TTL synchronous serial chips are cheap and easy to get, but it's more work than a simple adapter to connect directly to one of the Genesis controller ports.

MG
Very interested
Posts: 56
Joined: Wed Feb 28, 2007 8:41 am
Contact:

Post by MG » Tue Feb 05, 2008 6:49 am

Yop !

Protocole between PSX (Console) and PAD is similar to the SPI protocole, and Chilly Willy is ok, we can't put directly the PSX pad in the MD.
If we want to respect the electronique from the MD we must insert a microcontrolor between PAD and MD.

I have an idea about the "how to.."
http://www.blatter.perso.cegetel.net/bi ... y_psx.html
Sorry, it's in french.
An adaptation between PSX PAD and MD.

A+
Ah ? ben si ? pourquoi pas...

LocalH
Very interested
Posts: 152
Joined: Tue Dec 19, 2006 5:04 pm

Post by LocalH » Tue Feb 05, 2008 7:11 am

However it's done, the microcontroller should be programmed to detect a guitar controller (I know that one of the unique factors is that left on the d-pad is always held down with the guitars, but that's not the only thing, because between GH1 and GH2, they broke support for all third-party guitars up to that point, and the same with GH3, so there's something else that uniquely identifies it as a guitar controller) and then respond to a specific sequence of outputs from the Genesis such that the game (and indeed, any other code that someone may write to interface with a guitar) will automatically know it's there.

evildragon
Very interested
Posts: 326
Joined: Mon Mar 12, 2007 1:53 am
Contact:

Post by evildragon » Tue Feb 05, 2008 8:17 am

LocalH wrote:However it's done, the microcontroller should be programmed to detect a guitar controller (I know that one of the unique factors is that left on the d-pad is always held down with the guitars
Oh, is that why when I plug in a GH guitar into my laptop, it always shows it stuck left? I thought that was a bug.

(PSX to USB)

Scorpion Illuminati
Interested
Posts: 28
Joined: Fri Oct 02, 2015 4:58 pm

Re: Guitar Hero clone brainstorming

Post by Scorpion Illuminati » Fri Apr 01, 2016 10:08 pm

Hey,

Just read your pm, was wondering if you would be interested in contributing to my GitHub project instead of creating your own clone. If so feel free to clone my project and start making pull requests. Otherwise no worries, just put a simple credit (can be as "lowly" as a generic special thanks) letting people know that your using my original codebase.


Sincerely,

Scorpion Illuminati
Scorpion Illuminati - An open source rhythm game for the Sega Genesis
http://www.scorpionilluminati.tk

Post Reply