Guitar Hero clone brainstorming
Moderator: Mask of Destiny
Guitar Hero clone brainstorming
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.
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.
-
- Very interested
- Posts: 374
- Joined: Mon Jun 11, 2007 3:09 am
- Location: Azeitão, PT
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
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.
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.
-
- Very interested
- Posts: 2440
- Joined: Tue Dec 05, 2006 1:37 pm
- Location: Estonia, Rapla City
- Contact:
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
http://www.tmeeco.eu
Files of all broken links and images of mine are found here : http://www.tmeeco.eu/FileDen
-
- Very interested
- Posts: 374
- Joined: Mon Jun 11, 2007 3:09 am
- Location: Azeitão, PT
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...
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...
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.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...
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).
-
- Very interested
- Posts: 2984
- Joined: Fri Aug 17, 2007 9:33 pm
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.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...
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.
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+
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...
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.
-
- Very interested
- Posts: 326
- Joined: Mon Mar 12, 2007 1:53 am
- Contact:
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.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
(PSX to USB)
-
- Interested
- Posts: 28
- Joined: Fri Oct 02, 2015 4:58 pm
Re: Guitar Hero clone brainstorming
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
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
http://www.scorpionilluminati.tk