1 . ___ ____ _________ ___ 2 .| `|_| `| ___ ___ __ .| ____/ _______ .| `| 3 .:| _ || `| `|(__)| (_ `|/ _ `\|____/:. 4 ...:::||____|:|____||_______/::::\_________/\_______/(____)::::... 5 `-*-- - - - - - - ^cls 6 Core-GraphX / PC Engine / Turbo GraphX Emulator 7 Version 2.10 8 04 March 2003 9 10 11 N.B. When reading this .TXT - "(*)" indicates the main changes 12 13--[ CONTACT INFORMATION ]---------------------------------------------------- 14 E-Mail : zeograd@zeograd.com 15 16 ICQ UIN : 40632933 17 18 Homepage : http://www.zeograd.com 19 20 21--[ DISCLAIMER ]------------------------------------------------------------- 22 23 I can't be held responsible for any misuse of this software, it comes 24 with absolutely no warranty. Use it at your own risks. 25 26--[ INTRODUCTION ]----------------------------------------------------------- 27 28 Hi everyone, Welcome to the Hu-Go! documentation. 29 I (Zeograd) am not really the author of this program. I discovered 30 sources of a PC Engine emulator at Bero's Homepage 31 (http://www.geocities.co.jp/Playtown/2004/) 32 33 Plus improvements at Hmmx's Homepage 34 (formerly, http://www.geocities.co.jp/SiliconValley/7052/). 35 36 Hmmx made XPCE (for DirectX) but I've been interested in continuing 37 their work under DOS and voila, you've got another emulator available 38 to burn your keyboard playing all night with great PCE games ;) 39 40 This one is free and you've got access to sources as Bero did with his 41 work. I'd like people interested in making a good emulator for free to 42 contact me to talk about what is missing in Hu-Go!. Don't hesitate 43 answering the poll on my webpage or filling the forum you can find there. 44 45--[ HOW TO INSTALL IT ? ]---------------------------------------------------- 46 47 Hu-Go! is now available in binary form for several platforms, such as 48 Microsoft windows, i386 debian, i386 Mandrake as well as in sources form 49 which can be compiled on various environments. 50 51 Check the INSTALL file for further instructions concerning the source 52 distribution. 53 54--[ HOW TO USE IT ? ]-------------------------------------------------------- 55 56 You can hardly make it easier (maybe with a direct synaptic link between 57 your brain and your computer to guess the name of the rom...) : 58 Just type hugo with no options to bring the gtk gui which is quite straight 59 forward. You can load a rom (or .iso) or fire a cd. You can load and save 60 file using the menu, or change the settings, which are those you can change 61 in the .ini file. 62 You can also use hugo without the gui, just type 63 hugo [ROM] [BACKUPMEM] [OPTION] where ROM is the name of the 64 ROM or ISO or ISQ or HCD. Check out the HCD section later for details. 65 you want to play with. If ROM has no extension, Hu-Go! 66 will look for ROM.PCE then ROM.ZIP. If the ROM has PCE extension, try it, 67 then try ROM in ROM.ZIP. Then if ROM has ZIP extension, look for the 68 PCE file with same basename as ROM... 69 ISO games must be specified with ISO extension to be recognized. 70 71 (Recommended games - try SUPER STAR SOLDIER or NEUTOPIA 2, you won't 72 regret it!. If you don't have any rom, you can try the little demo 73 rom included made with Huc [www.zeograd.com]) 74 75 For OPTIONS, see later... 76 77 BACKUPMEM is the name of the file containing the backup RAM. 78 These two last are optionals. The order shouldn't import but the ROM name 79 must be before the name of backup RAM. 80 81--[ HOW TO CONFIGURE HU-GO! FOR PLAYING CDS ? ]------------------------------ 82 83 Under linux, you first have to configure the cd path (ie /dev/cdrom or such) 84 either on the command line (-i <cd path>), the .ini file (variable cd_path), 85 or in the gui, under the tab 'CD emulation'. 86 FreeBSD doesn't have yet the CD support. 87 For any platform, choose the system card rom location. It's the rom which 88 actually boots the CD, and it's called syscard.pce or such. As for all 89 commercial roms, you can only use it if you've bought a system card hucard 90 or an hardware containing it (Any duo for instance). 91 It's a known bug that you can't always play several CDs in a row without 92 restarting the whole emulator. 93 94--[ SYSTEM REQUIREMENTS ]---------------------------------------------------- 95 96 -- Pentium 166 (maybe less without sound; something like 233 or 266 for 97 good sound). 98 99 -- 8MB of RAM. 100 101 -- A Linux system or FreeBSD or Microsoft windows (only 95 to XP tested) 102 103 -- A sound card (only if you want to hear sound, of course). 104 105 -- A small amount of brain cells (enough to control basic motor 106 functions. For Cheating and Disassembling, a few trillion more may be 107 required ;) 108 109 -- Fingers (may be replaced by a direct synaptic link, I'm working on it, 110 if you want to become a guinea pig, let me know too ;) Note - requires 111 brain cells specified above. 112 113--[ KEYBOARD CONTROLS ]------------------------------------------------------ 114 115 Cursor keys Direction 116 Alt Button 1 117 Space Button 2 118 Tab Select key 119 Enter Start key 120 X Toggle Autofire 1 121 C Toggle autofire 2 122 123 (These are default keys for all players) 124 You can edit yours using the HU-GO!.INI (dos/windows) or hugo.ini (un*x) 125 file (See details later) 126 127 Special keys: 128 129 Can't be changed (you can always assign these keys to "normal" ones, 130 it will mostly have the "special" effects, eventually followed by the 131 "normal" ones) 132 133 134 tilde key (under ESC key) Display the number of frame elapsed 135 since the beginning of the track (to create subtitles) 136 1 on alpha pad Toggle the sprites display 137 2 on alpha pad Toggle the background display 138 139-- alpha keys -- 140 3,4,5,6,7 and 8 on alpha pad 141 May unblock some isos 142-- alpha keys -- 143 144 - on alpha pad Lower the sound level 145 = on alpha pad Raise the sound level 146 9 on alpha pad Lower the sound quality 147 0 on alpha pad Raise the sound quality 148 F1 Enter a value to search for (See details later) 149 F2 Set a value in RAM (See details later) 150 F3 Freeze a value in RAM (See details later) 151 F4 Test purpose key, now display the draft gui 152 F5 Save ScreenShot (named pict????.pcx) (disabled right now) 153 F9 Toggle full screen mode 154 ESC, F12 Exit (not really useful) 155 F6 Save game progression (named ROM.SAV where ROM is the 156 ROM name, Also work for iso file in file names ISO.SVI, 157 For games on CD, only 1 saved game is allowed, whatever the CD) 158 F7 Load game progression 159 'Num Lock' Toggle sound dumping mode 160 161 Keys Used on Numeric Keypad 162 / Toggle image dumping mode (in VIDEO/*.PCX) 163 + Skip one more frame per sec. 164 - Skip one less frame per sec. 165 166--[ OPTIONS ]---------------------------------------------------------------- 167 168 There are two kinds of options. Command line or HU-GO!.INI options. The 169 emu first reads in the INI file then the command line, so you can 170 over-ride general options. 171 172 ** Command line options 173 Can be either -FV or -F V where F is the flag and V the value 174 175 -- c : CD emulation (This way of emulating ISO is no more compulsory but still works, 176 is compulsory for using CDs) 177 0 -> Only Hu-card emulation (Default) 178 1 -> CD emulation on 179 2 -> ISO file emulation on 180 3 -> ISQ file emulation on 181 4 -> BIN file emulation on (it's a raw full dump, only 1 track supported 182 right now, and only if <280 Mb) 183 184 -- f : Fullscreen model 185 0 -> Start in window mode 186 1 -> Start in fullscreen mode 187 188 -- m : No bios mode 189 0 -> Use bios as much as possible (Default, faster but sometime less 190 accurate) 191 1 -> Use no bios at all as possible (slower but make more game works) 192 193 -- s : Stereo mode 194 0 -> Mono mode (Default) 195 1 -> Stereo mode 196 197 -- u : US encoded rom 198 0 -> Normal rom (Default) 199 1 -> US encoded rom, with invertion of bits 200 Hu-Go! should automaticaly recognize such rom but if not (i.e. 201 it works only is -u1 is specified) tell me so that I can add it 202 to the database. 203 204 -- w : Window size multiplier 205 1 -> normal window size (Default) 206 2 -> doubled window size 207 3 -> tripled window size 208 4 -> the meaning of this option is let to the reader's attention 209 210 ** Initialisation file options 211 This file accepts comments in lines beginning with a #, the form is 212 F=V where F the name of the option and V the value. 213 214 --KEYS : it's a bit long to explain in details but I'll explain the 215 method. Each function is represented by a string ("UP","DOWN","LEFT", 216 "RIGHT","I","II","SELECT","START","AUTOI","AUTOII") immediately followed 217 by the number of the contoller. The value is then the scancode as you 218 can find it in the SCANCODE.TXT. 219 When mapping a joypad related configuration, you can also use "PI","PII", 220 "PSELECT", "PSTART", "PAUTOI", "PAUTOII" to map button I, II, Select, Start 221 and autoI, autoII. The given value of the right being the number of the 222 button on your pad, of course. 223 Now, you can create up to 15 different configs by using sections like 224 [config5]. These sections must be at the end of the INI files. They 225 contain key definitions as explained above but also info on controllers 226 e.g. putting input2=key3 will make the 2nd pad of the PC Engine to be 227 controlled by the 3rd keyboard mapping (UP3, LEFT3,...). As valid strings 228 you have 'input1' to 'input5' for the 5 PC Engine Gamepads (only 4 229 emulated so far), and 'key1' to 'key5' for 5 key mappings, 'joy1' to 230 'joy4' for 4 different joypads, 'mouse1' and 'mouse2' for 2 mice (not yet 231 implemented) and 'synaplink' for a direct synaptic link (also not 232 implemented ;) 233 234 E.G. : 235 Setting in the INI file 236 237 config=1 238 239 [config1] 240 241 input1=key1 242 243 UP1=0x16 244 LEFT1=0x23 245 DOWN1=0x24 246 RIGHT1=0x25 247 248 input2=joy1 249 250 This will change direction keys for the first player to 'u','h','j','k' 251 while the second player will play with the first joypad. Note that when 252 you specify a joy input, only the directions and the 2 buttons are 253 remapped so you can still choose keys for select, start, autoI and 254 autoII. As an example, the config1 is just a standard input with 1 player 255 using a joypad so if you want to play with a joypad just uncomment the 256 line with config=1. It's not very clear but the built-in menu allows easier 257 configuration. 258 259 -- language : Language of most messages during the emulation 260 0 -> English (default) (by me) 261 1 -> Fran�ais (by me) 262 2 -> Espanol (by my gf, and Juan roman Soriano) 263 3 -> Slovensko (by ]pit[ ) 264 4 -> Portuguese (by CodeMaster) 265 5 -> German (by sALTY) 266 6 -> Dutch (by Fixo) 267 7 -> Polish (by Dox and Faust) 268 8 -> Italian (by Gareth Jax) 269 9 -> Russian (by Lord Mardulak) 270 271 -- rom_dir : Directory of your roms. It's the default directory the 272 fileselector will look in. Use either '/' or '\'. 273 (If no value given, current path is assumed) 274 275 -- snd_freq : Frequency of the PCM sound output. The higher, the best 276 quality but the slower. Use 11025 on slow machines and 22050 or 44100 277 on fast machines. You can also give intermediate values. 278 22050 Hz is default 279 280 -- buffer_size : Size of the buffer used for PCM sound output. the best 281 I can tell you here is to make tests. All depends of the frequency you use 282 and your machine speed. 256 bytes is the default (Fine for XP1900+) you can 283 also try 512 or 1024 if you got sound which stops at times. 284 285 -- cd_path : Device name of the cd drive under UN*X systems. 286 /dev/cdrom is default 287 288 -- stereo : Whether to output sound in stereo. 289 0 -> Mono sound (Default) 290 1 -> Stereo sound 291 292 -- fullscreen_width : Preferred width of fullscreen mode 293 640 is the default 294 295 -- fullscreen_height : Preferred height of fullscreen mode 296 480 is the default 297 298 -- window_size : Zoom factor when in windowed mode 299 1 to 4 are valid zoom factor (1 being the default) 300 301 302--[ HCD ]-------------------------------------------------------------------- 303 304 Then what is this new format. 305 HCD means : Hu-Go! Cd Definition. Such a file allow you to use multi-code 306 CDs and emulate audio tracks with MP3 307 It's only a beginning and there are still troubles with ISQ to emulate 308 Code tracks but it should work fine later. 309 HCD are divided in sections : 310 [main] 311 for main info : 312 first_track=XX 313 last_track=XX 314 315 that indicates the first and last track (easy) 316 317 ISO_path=XXX 318 MP3_path=XXX 319 320 which are the default path for ISO and MP3 files, convenient when moving 321 of directory e.g. 322 If you don't specify anything there, the default path is the .HCD one 323 324 minimum_bios=X 325 326 where X is 0 or 1. Use to enable this mode (see in command line option) 327 when launching a particular HCD. (Now, this mode is 'no bios' but for 328 obvious compatibility reason, I've not changed the name...) 329 330 Then for each track you can find a section : 331 [trackXX] 332 where you'll find : 333 334 filename=... 335 336 i.e. the filename of the file to use to emulate this track (.ISO or .ISQ 337 for code or .MP3 for audio) 338 then : 339 340 type=CODE 341 342 that specify if the track is a code one (audio is default) 343 et finally 344 345 begin=lsn,XXX 346 347 to specify the beginning of the track in LSN format (# of sector since the 348 beginning of the first one) or LBA (# of sector since the beginning of the 349 CD) or MSF (theoricaly, only LSN really tested) (as for MSF, just do : 350 begin=msf,mm:ss:ff 351 add zeros if compulsory) 352 even if just a beginning, it allows playing multi-code tracks 353 and MP3 in games. (even if .MP3 control isn't yet perfect) 354 You'll find an example in the archive. 355 356 There's now another mode available. It's the cd one. 357 Write 358 type=CD 359 and you'll have the ability to fake a track from the .hcd file with a 360 track coming from a real cd. 361 In this mode, you have 2 mode fields: 362 drive=0 363 which specify the drive in which is the track you want to use, using the 364 format in which the cd driver is used to. i.e. 0, 1 and such.. for aspi 365 driver and letter D, E, and such for the mscdex driver. 366 367 Then you can specify the number of the track to use on the cd driver with 368 track=5 369 If you don't specify this field, the default value for the track field will 370 be the track number of the track to fake. 371 372 373 You can also use patching functions 374 375 patch_number=XX 376 377 where XX is the number of patch you want to apply 378 379 then 380 381 patchX=0X????????,0X?? 382 383 where X goes from 0 to patch_number-1 and two hexa numbers represent 384 the offset and new val of the patch in the ISO file. 385 386 On the same model, you can also find a way of adding subtitle when audio 387 tracks are played (even if you don't own the MP3 for it). You can choose 388 the number of subtitles with : 389 390 subtitle_number=XX 391 392 where XX is the number of subtitle you want to have for the track. 393 394 You can also choose to synchronize the subtitles with the game or the 395 music with 396 397 synchro_mode=XX 398 399 if XX = 0, synchronisation is done with the game as in the first release 400 supporting it, else it's synchronised with music and you can replace 401 the words 'number of frame' by '60th of sec' in the following explanation, 402 concerning the meaning of the begin field. 403 404 Then, for each subtitle, you must choose the time where it should begin, 405 its duration and the message to display. 406 The syntax is as follow : 407 408 subtitleXX=<begin>,<duration>,<message> 409 410 where XX is the number of the subtitle (XX is between 0 and subtitle_number-1) 411 <begin> is the number of frame elapsed since the beginning of the track. 412 There's normally 60 frame per sec but using the number of frame instead 413 of time make subtitles synchronized with the real game and not the music. 414 Since it's harder to guess how many frame have been displayed, I've added 415 a display of such a number with the tilde key. The value that you'll see 416 when pressing the key is the exact value you'll have to put in the <begin> 417 field (ajusting them a bit if needed...) 418 The <duration> field is in 60th of second, i.e. putting 60 there will 419 display the message for 1 sec and finally, the last field is the message 420 that will be displayed. It shouldn't contain any comma. 421 One last thing : you must sort the subtitle according to the order of 422 appearition. 423 Don't hesitate looking at the example or sending a mail if needed. 424 425--[ CHEATING ]--------------------------------------------------------------- 426 427 I've pondered at length as to whether to include such an option. If I'm 428 not mistaken, Hu-Go! is the first emulator to propose this type of 429 option. Cheating is very primitive and there is no visual help so you 430 can't see what you type... 431 432 BUT... 433 434 It works! If you want to cheat with the number of lives in a game, 435 first you run your game, then you type F1, the game stops. This is 436 normal. It's waiting for the value to search. Then you enter the number 437 of lives you actually have (In fact, it only considers the lower byte of 438 the value you entered), then it makes a search and shows you the result. 439 Play around and lose a life, repeat the same as above, pressing F1 and 440 entering the current value. Repeat it again and again until the search 441 only finds one value.. 442 Note carefully this value, it's the offset in RAM of a variable that 443 contains the value you've entered. Is it the correct value? Easy, press 444 F2, the game stops then enter the offset noted before and the new value. 445 Normally you should have as many lives as you want. 446 If you got a 'SEARCH FAILED' then ... it failed, see below for help. 447 Using this method, the value is only changed once, but if you press F3 448 then enter the offset and the value, it will be changed to the specified 449 value 60 times per sec., so it looks like it is frozen. Pressing F3 then 450 the address will unfreeze the value. 451 Now, you can research value using a relative method. that's to say that 452 instead of searching exact values, you can simply tell hu-go! to search 453 for variation of the variable. e.g. each time you lose a life, you can 454 make a research on -1, i.e. the variable you're looking for have been 455 decreased by 1. With this method, you don't have to worry about the base 456 value used to represent the variable (see hints concerning this). 457 When you want to make a relative research, you have to use F1 as 458 previously but instead of typing the plain number, you must prefix it 459 with '+' or '-'. For the first research, you don't have to worry about 460 the value you're giving, it's simply used to initialize the temporary 461 file containing all the possible variables with all the current values. 462 Once done, you can press F1 then '+1' or '-3' and such. From a technical 463 point of view, it's possible to mix normal and relative research but if 464 you do absolute research, there's no point on doing relative one. 465 466--[ CHEATING HINTS ]--------------------------------------------------------- 467 468 -- Be careful, you may think the cheat didn't work, in fact, some 469 variables aren't updated each frame so try to lose a life or if you 470 modified money try to buy something... then you may see the difference. 471 -- You aren't obliged to search for altered values, you can make a 472 search for 2 lifes then 5 sec. later you search for 2 lifes again,... 473 I suggest you search for the same value twice very quickly. If you look 474 twice for the same value with only a half a sec. interval, you will 475 certainly eliminate a good amount of 'bad' variables. 476 -- Once a search is complete and you no longer get a lot values each 477 time you search, you may stay stuck because two variables have the same 478 value at the same moment (often for core and screen purposes). If that 479 is the case go and check the file named ROM.FP0 (where ROM is the name 480 of the rom), this contains the different possible offsets. It's up to 481 you. 482 -- Sessions of research are kept between two launches of the emulator. 483 -- If you want to start a new session, just make a 'SEARCH FAILED' 484 (Search for 25 then 6 then 79 in a very reduced interval, if you can't 485 get an 'SEARCH FAILED' then you will be the next on my guinea pig list 486 for trying the direct synaptic link ;). 487 -- Sometimes, the value on screen isn't stored like shown, e.g. if you 488 have 5 lives, maybe the variable 'LIFE' is set at 4 or 6, try to search 489 for 'value'+1 or 'value'-1, it may work... (like the number of balls in 490 Devil Cr*sh). 491 The best to avoid this kind of problem is using relative value research. 492 -- The search only works on bytes but a variable may take 2, 3 or more 493 bytes. In this case try modifying the byte just 1 byte above or below 494 the one you found (e.g. if you've found that putting a value at address 495 X would change the money a bit, putting a value at address X+1 will 496 certainly change the money a lot). 497 498--[ DEVELOPERS CORNER ]------------------------------------------------------ 499 500 Hu-Go! now exposes a large part of the current game internal variables via 501 shared memory (only linux/freebsd for now, soon windows too). 502 You can use the shared memory of identifier 25679. It contains a structure 503 of type struct_hard_pce as defined in shared_memory.h (you should grab the 504 source archive of course). You can then alter or read all the quite self 505 explanatory variables out there. As for controlling the cpu, you can use 506 the s_external_control_cpu field. 507 -1 => Full speed 508 0 => Emulation paused 509 >0 => Number of opcodes to run before pausing 510 You have to recompile Hu-Go! using --enable-shared-memory to benefit this 511 feature. 512 513--[ THANKS ]----------------------------------------------------------------- 514 515 Special thanks : 516 *> -- Bacon boy 99 (Ex-Planet Rom webmaster, the former logo, <* 517 having sent me some Cds and in fact, lots of things) 518 -- Ixion for the lots of bugs/improvements he worked on recently 519 -- Blake- for the bugs he fixed while doing his pce emu on gp32 520 -- ]pit[ for all his help (among all the new logo and banners) 521 -- Nyef for all the infos he gave me on CD emulation 522 -- Lester Barrows for his help on the linux code (notably, pad support from 523 his work) 524 -- Bt Garner (ideas, lots of stuff including hosting my site now, ...) 525 -- Ishan (ex Vlendr'it) for the mailing list, tweak mode tests, finding 526 nice code resources on the web and scanline mode 527 -- TOZTWO for the nice HTML doc 528 -- Tormod Tjaberg for the MP3 length detection code 529 -- fixo, cools, sALTY, codemaster, Raoh, MrF, dus, Yuu and all the #emu 530 dudes on IrcNet ;) 531 -- ElmerYud coz' he's Hu-Go! publicity manager ^_^ 532 -- tAGGY for two nice pictures 533 -- SirJaguar, Nico, Ded, ZePoulpe, Leto_II, Ziller, Readiosys and guys on 534 #utopiasoft or #nec4ever 535 -- Dirk Steven (EAGLE is really very nice) 536 -- Dave Shadoff (TGSIM and TGSIMGPP, longs mails and lots of ideas, 537 author of the little rom included, very nice guy) 538 -- Marat Fayzullin (BASE SOURCE for 6502) 539 -- Bero (Additional SOURCE) 540 -- Hmmx (More additional SOURCE) 541 -- DJ Delorie (DJGPP, what a great thing!) 542 -- Shawn Hargreaves (ALLEGRO is great) 543 -- David Michel (MAGIC ENGINE is still the best emu!!!, futhermore he's 544 very friendly and fair-play. Also the Author of the Magic Kit which 545 allow you to create your own PC Engine games) 546 -- The info-zip group for making unzipping easy (sometimes ^_^) 547 548 -- Zophar domain (www.zophar.net) 549 -- Jens Christian Restemeier (DOCS) 550 -- Joe LoCicero (DOCS) 551 -- David Woodford (DOCS) 552 -- Videoman (DOCS) 553 -- Charles W Sandmann (CWSDPMI, this program is under GPL license and you 554 can get the source at http://www.delorie.com/djgpp/ ) 555 -- Markus F.X.J. Oberhumer & Laszlo Molnar (contribution to UPX, an 556 excellent EXE-packer used in this release) 557 558 Diverse thanks: 559 -- Bouli (www.multimania.com/booemu/ 560 arcades.le-village.com/megrom/) 561 for using Hu-Go! for his screenshots ;) 562 -- Michael Sheldows (www.homestead.com/sheldows) 563 for trying to port Hu-Go! to a new OS of his own 564 -- Mr Iceberg (www.multimania.com/pceaudit) 565 for offering a PCE ROM manager based on FPCEID 566 567 Others I may have forgotten (Sorry!!!) 568 (send me a mail if you consider you should be credited...) 569 570 If you have any questions, suggestions, propositions for help or 571 mirroring, bug reporting, or non working games, don't hesitate, 572 send a e-mail (I love e-mails) to : ZEOGRAD@ZEOGRAD.COM 573 574 (You can also send money, car keys, credit card with PIN number, 575 video games, girlfriends, ask for snail mail address !! ;) 576 577 . ___ ____ _________ ___ 578 .| `|_| `| ___ ___ __ .| ____/ _______ .| `| 579 .:| _ || `| `|(__)| (_ `|/ _ `\|____/:. 580...:::||____|:|____||_______/::::\_________/\_______/(____)::::... 581 `-*-- - - - - - - ^cls 582 583