trunk/docs/config.txt
| r245597 | r245598 | |
| 294 | 294 | Displays a list of all devices known to be hooked up to a game. The ":" |
| 295 | 295 | is considered the game itself with the devices list being attached to give |
| 296 | 296 | the user a better understanding of what the emulation is using. |
| 297 | | |
| 297 | |
| 298 | 298 | -listslots [<gamename|wildcard>] |
| 299 | 299 | |
| 300 | 300 | Show available slots and options for each slot (if available). Primarily |
| 301 | 301 | used for MESS to allow control over internal plug-in cards, much like PC's |
| 302 | 302 | needing video, sound and other cards. |
| 303 | | |
| 303 | |
| 304 | 304 | -listmedia / -lm [<gamename|wildcard>] |
| 305 | | |
| 305 | |
| 306 | 306 | List available media that the chosen game or system allows to be used. This |
| 307 | 307 | includes media types (cartridge, cassette, diskette and more) as well as |
| 308 | 308 | common file extentions which are supported. |
| 309 | 309 | |
| 310 | 310 | -listsoftware [<gamename|wildcard>] |
| 311 | | |
| 311 | |
| 312 | 312 | Posts to screen all software lists which can be used by the entered gamename |
| 313 | 313 | or system. Notice, this is simply a copy/paste of the .XML file which reside |
| 314 | 314 | in the HASH folder which are allowed to be used. |
| r245597 | r245598 | |
| 331 | 331 | softwarelistname. By default, all drivers that have valid ZIP files or directories |
| 332 | 332 | in the rompath are verified; however, you can limit this list by specifying a |
| 333 | 333 | specific softwarelistname (without .XML) after the -verifysoftlist command. |
| 334 | | |
| 334 | |
| 335 | 335 | -listmidi |
| 336 | 336 | |
| 337 | 337 | Create a list of list available MIDI I/O devices for use with emulation. |
| 338 | 338 | |
| 339 | | |
| 340 | 339 | |
| 340 | |
| 341 | 341 | Configuration options |
| 342 | 342 | --------------------- |
| 343 | 343 | |
| r245597 | r245598 | |
| 570 | 570 | find the next empty value for %i and use that for a filename. The |
| 571 | 571 | default is %g/%i, which creates a separate folder for each game, |
| 572 | 572 | and names the snapshots under it starting with 0000 and increasing |
| 573 | | from there. In addition to the above, for drivers using different |
| 574 | | media, like carts or floppy disks, you can also use the %d_[media] |
| 573 | from there. In addition to the above, for drivers using different |
| 574 | media, like carts or floppy disks, you can also use the %d_[media] |
| 575 | 575 | indicator. Replace [media] with the media switch you want to use. |
| 576 | | A few examples: if you use 'mame robby -snapname foo/%g%i' snapshots |
| 576 | A few examples: if you use 'mame robby -snapname foo/%g%i' snapshots |
| 577 | 577 | will be saved as 'snaps\foo\robby0000.png' , 'snaps\foo\robby0001.png' |
| 578 | | and so on ; if you use 'mess nes -cart robby -snapname %g/%d_cart' |
| 579 | | snapshots will be saved as 'snaps\nes\robby.png' ; if you use |
| 580 | | 'mess c64 -flop1 robby -snapname %g/%d_flop1/%i' snapshots will be |
| 578 | and so on ; if you use 'mess nes -cart robby -snapname %g/%d_cart' |
| 579 | snapshots will be saved as 'snaps\nes\robby.png' ; if you use |
| 580 | 'mess c64 -flop1 robby -snapname %g/%d_flop1/%i' snapshots will be |
| 581 | 581 | saved as 'snaps\c64\robby\0000.png'. |
| 582 | 582 | |
| 583 | 583 | -snapsize <width>x<height> |
| r245597 | r245598 | |
| 607 | 607 | -statename <name> |
| 608 | 608 | |
| 609 | 609 | Describes how MAME should store save state files, relative to the |
| 610 | | state_directory path. <name> is a string that provides a template that |
| 611 | | is used to generate a relative path. Two simple substitutions are |
| 612 | | provided: the / character represents the path separator on any target |
| 613 | | platform (even Windows); the string %g represents the driver name of |
| 614 | | the current game. The default is %g, which creates a separate folder for |
| 615 | | each game. In addition to the above, for drivers using different |
| 616 | | media, like carts or floppy disks, you can also use the %d_[media] |
| 610 | state_directory path. <name> is a string that provides a template that |
| 611 | is used to generate a relative path. Two simple substitutions are |
| 612 | provided: the / character represents the path separator on any target |
| 613 | platform (even Windows); the string %g represents the driver name of |
| 614 | the current game. The default is %g, which creates a separate folder for |
| 615 | each game. In addition to the above, for drivers using different |
| 616 | media, like carts or floppy disks, you can also use the %d_[media] |
| 617 | 617 | indicator. Replace [media] with the media switch you want to use. |
| 618 | | A few examples: if you use 'mame robby -statename foo/%g' save states |
| 619 | | will be stored inside 'sta\foo\robby\' ; if you use 'mess nes -cart |
| 620 | | robby -statename %g/%d_cart' save states will be stored inside |
| 621 | | 'sta\nes\robby\' ; if you use 'mess c64 -flop1 robby -statename |
| 618 | A few examples: if you use 'mame robby -statename foo/%g' save states |
| 619 | will be stored inside 'sta\foo\robby\' ; if you use 'mess nes -cart |
| 620 | robby -statename %g/%d_cart' save states will be stored inside |
| 621 | 'sta\nes\robby\' ; if you use 'mess c64 -flop1 robby -statename |
| 622 | 622 | %g/%d_flop1' save states will be stored inside 'sta\c64\robby\'. |
| 623 | 623 | |
| 624 | 624 | -[no]burnin |
| 625 | 625 | |
| 626 | | Tracks brightness of the screen during play and at the end of |
| 626 | Tracks brightness of the screen during play and at the end of |
| 627 | 627 | emulation generates a PNG that can be used to simulate burn-in |
| 628 | 628 | effects on other games. The resulting PNG is created such that the |
| 629 | | least used-areas of the screen are fully white (since burned-in areas |
| 629 | least used-areas of the screen are fully white (since burned-in areas |
| 630 | 630 | are darker, all other areas of the screen must be lightened a touch). |
| 631 | 631 | The intention is that this PNG can be loaded via an artwork file with |
| 632 | 632 | a low alpha (e.g, 0.1-0.2 seems to work well) and blended over the |
| 633 | | entire screen. The PNG files are saved in the snap directory under |
| 633 | entire screen. The PNG files are saved in the snap directory under |
| 634 | 634 | the gamename/burnin-<screen.name>.png. The default is OFF (-noburnin). |
| 635 | 635 | |
| 636 | 636 | |
| r245597 | r245598 | |
| 1122 | 1122 | |
| 1123 | 1123 | A special 'internal' debugger for debugging. Activated when used along |
| 1124 | 1124 | with -debug. The default if OFF (-nodebug_internal). |
| 1125 | | |
| 1126 | 1125 | |
| 1127 | 1126 | |
| 1127 | |
| 1128 | 1128 | Core misc options |
| 1129 | 1129 | ----------------- |
| 1130 | 1130 | |
| r245597 | r245598 | |
| 1149 | 1149 | Specifies the name of a font file to use for the UI font. If this font |
| 1150 | 1150 | cannot be found or cannot be loaded, the system will fall back to its |
| 1151 | 1151 | built-in UI font. On some platforms 'fontname' can be a system font |
| 1152 | | name (TTF) instead of a (BDF) font file. The default is 'default' (use |
| 1152 | name (TTF) instead of a (BDF) font file. The default is 'default' (use |
| 1153 | 1153 | the OSD-determined default font). |
| 1154 | 1154 | |
| 1155 | 1155 | -ramsize [n] |
trunk/docs/floppy.txt
| r245597 | r245598 | |
| 83 | 83 | A sensor detects when the head is on track 0 and the controller is not |
| 84 | 84 | supposed to try to go past it. In addition physical blocks prevent |
| 85 | 85 | the head from going out of the correct track range. Some systems |
| 86 | | (apple 2, some c64) do not take the track 0 sensor into account and |
| 86 | (Apple II, some C64) do not take the track 0 sensor into account and |
| 87 | 87 | just wham the head against the track 0 physical block, giving a |
| 88 | 88 | well-known crash noise and eventually damaging the head alignment. |
| 89 | 89 | |
| 90 | | Also, some systems (apple 2 and c64 again) have direct access to the |
| 90 | Also, some systems (Apple II and C64 again) have direct access to the |
| 91 | 91 | phases of the head positioning motor, allowing to trick the head into |
| 92 | 92 | going between tracks, in middle or even quarter positions. That was |
| 93 | 93 | not usable to write more tracks, since the head width did not change, |
| r245597 | r245598 | |
| 95 | 95 | it was used for some copy protection systems. |
| 96 | 96 | |
| 97 | 97 | The disk rotates at a fixed speed for a given track. The most usual |
| 98 | | speed is 300rpm for every track, with 360rpm found for HD 5.25" |
| 99 | | floppies and most 8" ones, and a number of different values like 90rpm |
| 100 | | for the earlier floppies or 150rpm for an HD floppy in an amiga. |
| 98 | speed is 300 rpm for every track, with 360 rpm found for HD 5.25" |
| 99 | floppies and most 8" ones, and a number of different values like 90 rpm |
| 100 | for the earlier floppies or 150 rpm for an HD floppy in an Amiga. |
| 101 | 101 | Having a fixed rotational speed for the whole disk is called Constant |
| 102 | 102 | Angular Velocity (CAV, almost everybody) or Zoned Constant Angular |
| 103 | 103 | Velocity (ZCAV, C64) depending on whether the read/write bitrate is |
| 104 | | constant or track-dependant. Some systems (apple 2, mac) varies the |
| 105 | | rotational speed depending on the track (something like 394rpm up to |
| 106 | | 590rpm) to end up with a Constant Linear Velocity (CLV). The idea |
| 104 | constant or track-dependant. Some systems (Apple II, Mac) vary the |
| 105 | rotational speed depending on the track (something like 394 rpm up to |
| 106 | 590 rpm) to end up with a Constant Linear Velocity (CLV). The idea |
| 107 | 107 | behind ZCAV/CLV is to get more bits out of the media by keeping the |
| 108 | 108 | minimal spacing between magnetic orientation transitions close to the |
| 109 | 109 | best the support can do. It seems that the complexity was not deemed |
| r245597 | r245598 | |
| 158 | 158 | 2.3 Floppy controller |
| 159 | 159 | |
| 160 | 160 | The task of the floppy controller is to turn the signals to/from the |
| 161 | | floppy drive into something the main cpu can digest. The level of |
| 161 | floppy drive into something the main CPU can digest. The level of |
| 162 | 162 | support actually done by the controller is extremely variable from one |
| 163 | | device to the other, from pretty much nothing (apple2, c64) through |
| 164 | | minimal (amiga) to complete (western digital chips, upd765 family). |
| 163 | device to the other, from pretty much nothing (Apple II, C64) through |
| 164 | minimal (Amiga) to complete (Western Digital chips, uPD765 family). |
| 165 | 165 | Usual functions include drive selection, motor control, track seeking |
| 166 | 166 | and of course reading and writing data. Of these only the last two |
| 167 | 167 | need to be described, the rest is obvious. |
| r245597 | r245598 | |
| 170 | 170 | or bytes) are encoded on the surface, and how these are grouped in |
| 171 | 171 | individually-addressable sectors. Two standards exist for these, |
| 172 | 172 | called FM and MFM, and in addition a number of systems use their |
| 173 | | home-grown variants. Moreover, some systems such as the amiga use a |
| 174 | | standard bit-level encoding (MFM) but an homegrown sector-level |
| 173 | home-grown variants. Moreover, some systems such as the Amiga use a |
| 174 | standard bit-level encoding (MFM) but a homegrown sector-level |
| 175 | 175 | organisation. |
| 176 | 176 | |
| 177 | 177 | |
| 178 | 178 | 2.3.1 Bit-level encodings |
| 179 | 179 | 2.3.1.1 Cell organization |
| 180 | 180 | |
| 181 | | All floppy controllers, even the wonkiest like the apple 2 one, start |
| 181 | All floppy controllers, even the wonkiest like the Apple II one, start |
| 182 | 182 | by dividing the track in equally-sized cells. They're angular |
| 183 | 183 | sections in the middle of which a magnetic orientation inversion may |
| 184 | | be present. From an hardware point of view the cells are seen as |
| 184 | be present. From a hardware point of view the cells are seen as |
| 185 | 185 | durations, which combined with the floppy rotation give the section. |
| 186 | 186 | For instance the standard MFM cell size for a 3" double-density floppy |
| 187 | | is 2us, which combined with the also standard 300rpm rotational speed |
| 187 | is 2us, which combined with the also standard 300 rpm rotational speed |
| 188 | 188 | gives an angular size of 1/100000th of a turn. Another way of saying |
| 189 | 189 | it is that there are 100K cells in a 3" DD track. |
| 190 | 190 | |
| r245597 | r245598 | |
| 234 | 234 | same surface, hence its other name of "double density". The cell size |
| 235 | 235 | is set at slightly over half the physical limit, e.g. 2us usually. |
| 236 | 236 | The constraint means that two '1' cells must be separated by at least |
| 237 | | one '0' cell. Each bit is once again encoded on two cells: |
| 237 | one '0' cell. Each bit is once again encoded on two cells: |
| 238 | 238 | |
| 239 | 239 | - the first cell, called the clock bit, is '1' if both the previous |
| 240 | 240 | and current data bits are 0, '0' otherwise |
| r245597 | r245598 | |
| 252 | 252 | Group Coded Recording, or GCR, encodings are a class of encodings |
| 253 | 253 | where strings of bits at least nibble-size are encoded into a given |
| 254 | 254 | cell stream given by a table. It has been used in particular by the |
| 255 | | apple 2, the mac and the c64, and each system has its own table, or |
| 255 | Apple II, the Mac and the C64, and each system has its own table, or |
| 256 | 256 | tables. |
| 257 | 257 | |
| 258 | 258 | 2.3.1.5 Other encodings |
| r245597 | r245598 | |
| 342 | 342 | The crc is a cyclic redundancy check of the data bits starting with |
| 343 | 343 | the mark just after the pulse train using polynom 0x11021. |
| 344 | 344 | |
| 345 | | The western digital-based controllers usually get rid of everything |
| 345 | The Western Digital-based controllers usually get rid of everything |
| 346 | 346 | but some 0xff before the first sector and allow a better use of space |
| 347 | 347 | as a result. |
| 348 | 348 | |
| r245597 | r245598 | |
| 365 | 365 | - MFM-encoded 0xfb, sector data followed by two bytes of crc |
| 366 | 366 | - A number of MFM-encoded 0x4e (usually 84, very variable) |
| 367 | 367 | |
| 368 | | The the track is finished with a stream of MFM-encoded 0x4e. |
| 368 | The track is finished with a stream of MFM-encoded 0x4e. |
| 369 | 369 | |
| 370 | 370 | The 250KHz pulse trains are used to lock the PLL to the signal |
| 371 | 371 | correctly. The cell pattern 4489 does not appear in normal |
| 372 | | MFM-encoded data and is used for clock/data separation. |
| 372 | MFM-encoded data and is used for clock/data separation. |
| 373 | 373 | |
| 374 | | As for FM, the western digital-based controllers usually get rid of |
| 374 | As for FM, the Western Digital-based controllers usually get rid of |
| 375 | 375 | everything but some 0x4e before the first sector and allow a better |
| 376 | 376 | use of space as a result. |
| 377 | 377 | |
| 378 | 378 | 2.3.2.3 Formatting and write splices |
| 379 | 379 | |
| 380 | | To be usable a floppy must have the sector headers and default sector |
| 380 | To be usable, a floppy must have the sector headers and default sector |
| 381 | 381 | data written on every track before using it. The controller starts |
| 382 | 382 | writing at a given place, often the index pulse but on some systems |
| 383 | 383 | whenever the command is sent, and writes until a complete turn is |
| r245597 | r245598 | |
| 392 | 392 | the start and end of the data block part. They're not supposed to |
| 393 | 393 | happen on a mastered disk though, even if there are some rare |
| 394 | 394 | exceptions. |
| 395 | | |
| 396 | 395 | |
| 396 | |
| 397 | 397 | 3 The new implementation |
| 398 | 398 | 3.1 Floppy disk representation |
| 399 | 399 | |
| r245597 | r245598 | |
| 417 | 417 | - 3, MG_D -> Damaged zone, reads as neutral but cannot be changed by writing |
| 418 | 418 | |
| 419 | 419 | The position is in angular units of 1/200,000,000th of a turn. It |
| 420 | | corresponds to one nanosecond when the drive rotates at 300rpm. |
| 420 | corresponds to one nanosecond when the drive rotates at 300 rpm. |
| 421 | 421 | |
| 422 | 422 | The last cell implicit end position is of course 200,000,000. |
| 423 | 423 | |
| r245597 | r245598 | |
| 523 | 523 | int sectdata_size) |
| 524 | 524 | |
| 525 | 525 | Extract standard mfm or fm sectors from a regenerated |
| 526 | | cell stream. Sectors must point to an array of 256 desc_xs. |
| 526 | cell stream. Sectors must point to an array of 256 desc_xs. |
| 527 | 527 | |
| 528 | 528 | An existing sector is recognizable by having ->data non-null. |
| 529 | 529 | Sector data is written in sectdata up to sectdata_size bytes. |
| r245597 | r245598 | |
| 563 | 563 | |
| 564 | 564 | 3.3.1 Control signals |
| 565 | 565 | |
| 566 | | Due to the way they're usually connected to cpus (e.g. directly on an |
| 567 | | i/o port) the controls signals work with physical instead of logical |
| 566 | Due to the way they're usually connected to CPUs (e.g. directly on an |
| 567 | I/O port), the control signals work with physical instead of logical |
| 568 | 568 | values. Which means than in general 0 means active, 1 means inactive. |
| 569 | 569 | Some signals also have a callback associated called when they change. |
| 570 | 570 | |
trunk/docs/imgtool.txt
| r245597 | r245598 | |
| 81 | 81 | only extraction supported |
| 82 | 82 | not heavily tested |
| 83 | 83 | |
| 84 | | Lynx archivs could and should be handled in a c64 emulation |
| 84 | Lynx archivs could and should be handled in a c64 emulation |
| 85 | 85 | with the native lynx tool |
| 86 | 86 | |
| 87 | 87 | |
| r245597 | r245598 | |
| 128 | 128 | type 7: 3 1/2 inch, enhanced density, DS, 2.88mb: sectors 36, heads 2, tracks 80 |
| 129 | 129 | |
| 130 | 130 | unix with bash: use |
| 131 | | dd if=/dev/zero of=<name.dsk> bs=512 count=$((9*2*40)) |
| 131 | dd if=/dev/zero of=<name.dsk> bs=512 count=$((9*2*40)) |
| 132 | 132 | to generate standard blank 360kb image |
| 133 | 133 | |
| 134 | 134 | |
| r245597 | r245598 | |
| 145 | 145 | type 0: 20mb standard pc/xt harddisk: 17 sectors, 4 heads, 615 cylinders |
| 146 | 146 | |
| 147 | 147 | unix with bash: use |
| 148 | | dd if=/dev/zero of=<name.dsk> bs=512 count=$((17*4*615)) |
| 148 | dd if=/dev/zero of=<name.dsk> bs=512 count=$((17*4*615)) |
| 149 | 149 | to generate standard blank 20mb pc xt harddisk image |
| 150 | 150 | |
| 151 | 151 | |
| 152 | 152 | Virtual MSX tape archive |
| 153 | 153 | ------------------------ |
| 154 | 154 | Converts .tap files from Virtual MSX 1.x to .cas files. It is not |
| 155 | | fault-tolerant. |
| 155 | fault-tolerant. |
| 156 | 156 | |
| 157 | 157 | |
| 158 | 158 | Virtual MSX Game Master 2 SRAM file |
| r245597 | r245598 | |
| 161 | 161 | SRAM of Konami's Game Master 2 in "gmaster2.ram". To convert this to something |
| 162 | 162 | useful with MESS and other MSX emulators, go: |
| 163 | 163 | |
| 164 | | imgtool getall vmsx_gm2 gmaster2.ram |
| 164 | imgtool getall vmsx_gm2 gmaster2.ram |
| 165 | 165 | |
| 166 | 166 | You'll get a file called gmaster2.mem, which must place in the correct directory |
| 167 | 167 | of mess to use (MESS\MEMCARD\GameMaster2 if your Game Master 2 .rom file is |
| r245597 | r245598 | |
| 174 | 174 | so you don't have to convert them. You can use it to export files to a real |
| 175 | 175 | MSX. Connect the MSX to the line out of your computer. Give the apropriate |
| 176 | 176 | command on the MSX (BLOAD "CAS:",R for example) and then play the .wav file |
| 177 | | on your computer. |
| 177 | on your computer. |
| 178 | 178 | |
| 179 | 179 | imgtool dir fmsx_cas file.cas |
| 180 | 180 | imgtool getall fmsx_cas file.cas |
| r245597 | r245598 | |
| 185 | 185 | ----------------------- |
| 186 | 186 | |
| 187 | 187 | The XelaSoft Archive is a compressed file. It can only contain one |
| 188 | | file. Although it can contain any file, it's always used for MSX disk |
| 188 | file. Although it can contain any file, it's always used for MSX disk |
| 189 | 189 | images. The were programs written by XelaSoft which made a dump |
| 190 | 190 | of a disk, and compressing them at the same time. Very useful to store |
| 191 | 191 | a disk dump on another disk. zip/gzip offer much better compression and |
| r245597 | r245598 | |
| 205 | 205 | filetype converts them all to .dsk format. |
| 206 | 206 | |
| 207 | 207 | msx_img are disk images with an extra byte at the beginning. It' 1 (0x01) |
| 208 | | for single-sided images and 2 (0x02) for double-side images. These |
| 208 | for single-sided images and 2 (0x02) for double-side images. These |
| 209 | 209 | files are at: ftp://ftp.funet.fi/pub/msx/. The extension is .img |
| 210 | 210 | |
| 211 | 211 | msx_ddi are DiskDupe 5.12 disk images. There is a 0x1800 bytes header |
| r245597 | r245598 | |
| 215 | 215 | msx_msx are disk images with a weird sector order. You can find them |
| 216 | 216 | at: ftp://jazz.snu.ac.kr/pub/msx/. The extension is .msx |
| 217 | 217 | |
| 218 | | msx_mul are "multi disk" images, used by fmsx-dos 1.6. It is simply |
| 218 | msx_mul are "multi disk" images, used by fmsx-dos 1.6. It is simply |
| 219 | 219 | more than one .dsk image appended to one another. The extension is |
| 220 | | still .dsk, but the file is larger than 720kB (actually always a |
| 220 | still .dsk, but the file is larger than 720kB (actually always a |
| 221 | 221 | multiple of 720kB. |
| 222 | 222 | |
| 223 | 223 | |
| r245597 | r245598 | |
| 235 | 235 | The maximum card size is 1mb, and maximum file size is 64k. |
| 236 | 236 | (Files will be cut at 64k if they are larger - e.g. when putting a large file) |
| 237 | 237 | |
| 238 | | As far as I know there is no directory system, however there is always a |
| 238 | As far as I know there is no directory system, however there is always a |
| 239 | 239 | system "NC100" directory which points to the root directory. (Like the DOS "." |
| 240 | 240 | directory). |
| 241 | 241 | |
trunk/nl_examples/breakout.c
| r245597 | r245598 | |
| 64 | 64 | CHIP("S2", DIPSWITCH, &dipswitch2_desc) |
| 65 | 65 | CHIP("S3", DIPSWITCH, &dipswitch3_desc) |
| 66 | 66 | CHIP("S4", DIPSWITCH, &dipswitch4_desc) |
| 67 | | |
| 67 | |
| 68 | 68 | SOLVER(Solver, 48000) |
| 69 | 69 | PARAM(Solver.ACCURACY, 1e-7) // works and is sufficient |
| 70 | 70 | //CHIP("CLOCK", CLOCK_14_318_MHZ) |
| r245597 | r245598 | |
| 80 | 80 | CHIP("C36", CAPACITOR, &c36_desc) |
| 81 | 81 | CHIP("C37", CAPACITOR, &c37_desc) |
| 82 | 82 | CHIP("PAD_EN_BUF", BUFFER, &pad_en_buf_desc) |
| 83 | | |
| 83 | |
| 84 | 84 | CHIP("A3", 7474) |
| 85 | 85 | CHIP("A4", 7408) |
| 86 | 86 | CHIP("A5", 7400) |
| r245597 | r245598 | |
| 105 | 105 | CHIP("C7", 9316) |
| 106 | 106 | CHIP("C8", 9316) |
| 107 | 107 | CHIP("C9", 555_Mono, &c9_555_desc) |
| 108 | | |
| 108 | |
| 109 | 109 | CHIP("D2", 7432) |
| 110 | 110 | CHIP("D3", 7474) |
| 111 | 111 | CHIP("D4", 9316) |
| r245597 | r245598 | |
| 208 | 208 | CHIP("COIN1", COIN_INPUT) |
| 209 | 209 | |
| 210 | 210 | //CHIP("COIN2", COIN_INPUT) |
| 211 | | |
| 211 | |
| 212 | 212 | CHIP("START", START_INPUT) |
| 213 | 213 | |
| 214 | 214 | CHIP("SERVE", BUTTONS1_INPUT) |
| 215 | | |
| 215 | |
| 216 | 216 | //TODO: coin2 and start 2 |
| 217 | 217 | |
| 218 | 218 | VIDEO(breakout) |
| r245597 | r245598 | |
| 256 | 256 | #define H64 "K2", 3 |
| 257 | 257 | #define H128 "K2", 6 |
| 258 | 258 | |
| 259 | | //#define V1 |
| 259 | //#define V1 |
| 260 | 260 | #define V2 "M3", 3 |
| 261 | 261 | #define V4 "M3", 6 |
| 262 | 262 | #define V8 "M3", 11 |
| r245597 | r245598 | |
| 274 | 274 | #define BSYNC "J1", 15 |
| 275 | 275 | #define BSYNC_n "J1", 14 |
| 276 | 276 | |
| 277 | | #define BALL "D7", 6 |
| 277 | #define BALL "D7", 6 |
| 278 | 278 | #define BALL_DISPLAY "A4", 6 |
| 279 | | #define PLAYFIELD "H4", 3 |
| 280 | | #define SCORE "D3", 5 |
| 279 | #define PLAYFIELD "H4", 3 |
| 280 | #define SCORE "D3", 5 |
| 281 | 281 | #define VERT_TRIG_n "H1", 8 |
| 282 | 282 | |
| 283 | 283 | #define CLOCK "H1", 11 |
| r245597 | r245598 | |
| 292 | 292 | |
| 293 | 293 | #define COIN "L9", 6 |
| 294 | 294 | #define COIN1_n "F8", 5 |
| 295 | | #define COIN2_n "H9", 5 |
| 295 | #define COIN2_n "H9", 5 |
| 296 | 296 | #define CREDIT_1_OR_2 "L9", 3 |
| 297 | 297 | #define CREDIT_1_OR_2_n "F9", 8 |
| 298 | 298 | #define CREDIT2 "F9", 6 |
| r245597 | r245598 | |
| 306 | 306 | |
| 307 | 307 | #define P2_CONDITIONAL "H1", 3 |
| 308 | 308 | #define P2_CONDITIONAL_dash "H7", 8 |
| 309 | | #define PLAYER_2 "B4", 14 |
| 309 | #define PLAYER_2 "B4", 14 |
| 310 | 310 | #define PLAYER_2_n "M9", 8 |
| 311 | 311 | |
| 312 | 312 | #define START_GAME "D8", 6 |
| r245597 | r245598 | |
| 317 | 317 | #define BG1 "K8", 8 |
| 318 | 318 | #define BG2_n "K8", 5 |
| 319 | 319 | #define BG2 "K8", 6 |
| 320 | | |
| 320 | |
| 321 | 321 | #define FREE_GAME_TONE "N7", 3 |
| 322 | 322 | #define BONUS_COIN "L9", 11 |
| 323 | | |
| 323 | |
| 324 | 324 | //#define Q "E9", 6 |
| 325 | 325 | #define LAT_Q "E9", 6 |
| 326 | 326 | #define Q_n "LATCH", 3 |
| 327 | 327 | #define SBD_n "D2", 11 |
| 328 | 328 | |
| 329 | 329 | #define PLAY_CP "D2", 8 |
| 330 | | #define PLGM2_n "F7", 7 |
| 330 | #define PLGM2_n "F7", 7 |
| 331 | 331 | #define VB_HIT_n "A5", 6 |
| 332 | 332 | |
| 333 | 333 | #define SERVE_n "SERVE", 1 |
| 334 | 334 | #define SERVE_WAIT "A3", 9 |
| 335 | | #define SERVE_WAIT_n "A3", 8 |
| 335 | #define SERVE_WAIT_n "A3", 8 |
| 336 | 336 | |
| 337 | | #define BRICK_DISPLAY "E3", 1 |
| 337 | #define BRICK_DISPLAY "E3", 1 |
| 338 | 338 | #define BRICK_HIT "E6", 5 |
| 339 | 339 | #define BRICK_HIT_n "E6", 6 |
| 340 | 340 | |
| r245597 | r245598 | |
| 401 | 401 | #define FPD1_n "F3", 9 |
| 402 | 402 | #define FPD2 "F3", 6 |
| 403 | 403 | #define FPD2_n "F3", 7 |
| 404 | | |
| 404 | |
| 405 | 405 | #define COUNT "N7", 11 |
| 406 | 406 | #define COUNT_1 "N7", 8 |
| 407 | 407 | #define COUNT_2 "N7", 6 |
| 408 | 408 | |
| 409 | 409 | #define ATTRACT "E6", 8 |
| 410 | 410 | #define ATTRACT_n "E6", 9 |
| 411 | | |
| 411 | |
| 412 | 412 | #define BRICK_SOUND "B8", 14 |
| 413 | 413 | #define P_HIT_SOUND "B7", 12 |
| 414 | 414 | #define VB_HIT_SOUND "B7", 11 |
| r245597 | r245598 | |
| 416 | 416 | #define LH_SIDE "J3", 13 |
| 417 | 417 | #define RH_SIDE "H2", 3 |
| 418 | 418 | #define TOP_BOUND "K4", 6 |
| 419 | | |
| 419 | |
| 420 | 420 | // CONNECTION(CREDIT_1_OR_2, "CREDIT_LIGHT1", 1) |
| 421 | 421 | // CONNECTION(CREDIT2, "CREDIT_LIGHT2", 1) |
| 422 | 422 | // CONNECTION(SERVE_WAIT_n, "SERVE_LIGHT", 1) |
| r245597 | r245598 | |
| 540 | 540 | CONNECTION(P2_CONDITIONAL, "M2", 7) |
| 541 | 541 | CONNECTION(GND, "M2", 4) |
| 542 | 542 | CONNECTION(GND, "M2", 16) |
| 543 | | |
| 543 | |
| 544 | 544 | CONNECTION("M2", 14, "N2", 13) |
| 545 | 545 | CONNECTION(V16_d, "N2", 10) |
| 546 | 546 | CONNECTION(V32_d, "N2", 8) |
| r245597 | r245598 | |
| 608 | 608 | CONNECTION(P, "K1", 10) |
| 609 | 609 | CONNECTION(CLOCK, "K1", 2) |
| 610 | 610 | CONNECTION("L1", 15, "K1", 7) |
| 611 | | |
| 611 | |
| 612 | 612 | CONNECTION(P, "L1", 1) |
| 613 | 613 | CONNECTION(P, "L1", 3) |
| 614 | 614 | CONNECTION(GND, "L1", 4) |
| r245597 | r245598 | |
| 631 | 631 | |
| 632 | 632 | CONNECTION("M1", 15, "H2", 5) |
| 633 | 633 | CONNECTION("L1", 15, "H2", 4) |
| 634 | | |
| 634 | |
| 635 | 635 | CONNECTION(V128_d, "N4", 5) |
| 636 | 636 | CONNECTION(V64_d, "N4", 3) |
| 637 | 637 | CONNECTION(V32_d, "N4", 4) |
| r245597 | r245598 | |
| 648 | 648 | CONNECTION("L1", 15, "M1", 7) |
| 649 | 649 | CONNECTION("K1", 15, "M1", 10) |
| 650 | 650 | |
| 651 | | |
| 651 | |
| 652 | 652 | //9312 circuit |
| 653 | 653 | CONNECTION(PLAYER_2, "M9", 9) |
| 654 | 654 | CONNECTION(BALL_A, "C5", 5) |
| r245597 | r245598 | |
| 758 | 758 | |
| 759 | 759 | //PADDLES |
| 760 | 760 | CONNECTION(ATTRACT_n, "B2", 4) |
| 761 | | |
| 761 | |
| 762 | 762 | CONNECTION("B2", 3, "E9", 13) |
| 763 | 763 | CONNECTION(PLAYER_2_n, "M3", 9) |
| 764 | 764 | CONNECTION(V128, "M3", 10) |
| r245597 | r245598 | |
| 810 | 810 | CONNECTION(P, "D4", 10) |
| 811 | 811 | CONNECTION("C3", 11, "D4", 7) |
| 812 | 812 | CONNECTION(VSYNC_n, "D4", 1) |
| 813 | | |
| 813 | |
| 814 | 814 | CONNECTION("D4", 15, "E4", 10) |
| 815 | 815 | CONNECTION("H7", 6, "E4", 9) |
| 816 | 816 | CONNECTION("C9", 3, "H7", 5) |
| r245597 | r245598 | |
| 839 | 839 | CONNECTION(V32_d, "J2", 9) |
| 840 | 840 | CONNECTION("J2", 8, "C2", 10) |
| 841 | 841 | CONNECTION("C2", 6, "C2", 9) |
| 842 | | |
| 843 | 842 | |
| 843 | |
| 844 | 844 | //SCORE |
| 845 | 845 | CONNECTION(SCI_n, "D3", 4) |
| 846 | 846 | CONNECTION(GND, "D3", 2) |
| 847 | 847 | CONNECTION(GND, "D3", 3) |
| 848 | 848 | CONNECTION(GND, "D3", 1) |
| 849 | | |
| 849 | |
| 850 | 850 | //PLAYER2_CONDITIONAL |
| 851 | 851 | CONNECTION(PLAYER_2, "H7", 10) |
| 852 | 852 | CONNECTION(GND, "S2", 1) |
| r245597 | r245598 | |
| 874 | 874 | CONNECTION(PLAYER_2, "M6", 7) |
| 875 | 875 | CONNECTION(COUNT_2, "M6", 2) |
| 876 | 876 | CONNECTION(START_GAME_n, "M6", 1) |
| 877 | | |
| 877 | |
| 878 | 878 | CONNECTION("M6", 15, "L6", 10) |
| 879 | 879 | CONNECTION(PLAYER_2, "L6", 7) |
| 880 | 880 | CONNECTION(COUNT_2, "L6", 2) |
| r245597 | r245598 | |
| 884 | 884 | CONNECTION(RAM_PLAYER1, "H6", 7) |
| 885 | 885 | CONNECTION(COUNT_1, "H6", 2) |
| 886 | 886 | CONNECTION(START_GAME_n, "H6", 1) |
| 887 | | |
| 887 | |
| 888 | 888 | CONNECTION("H6", 15, "J6", 10) |
| 889 | 889 | CONNECTION(RAM_PLAYER1, "J6", 7) |
| 890 | 890 | CONNECTION(COUNT_1, "J6", 2) |
| r245597 | r245598 | |
| 917 | 917 | CONNECTION("N8", 9, "N9", 11) |
| 918 | 918 | CONNECTION(P, "N9", 15) |
| 919 | 919 | CONNECTION(P, "N9", 5) |
| 920 | | |
| 920 | |
| 921 | 921 | CONNECTION(COUNT, "N9", 4) |
| 922 | 922 | CONNECTION(START_GAME, "N9", 14) |
| 923 | 923 | CONNECTION(H8_n, "N9", 1) |
| r245597 | r245598 | |
| 991 | 991 | CONNECTION(CKBH, "H1", 12) |
| 992 | 992 | CONNECTION("F1", 14, "H1", 13) |
| 993 | 993 | CONNECTION("F1", 15, "E1", 5) |
| 994 | | |
| 994 | |
| 995 | 995 | CONNECTION(P, "F1", 1) |
| 996 | 996 | CONNECTION(P, "F1", 7) |
| 997 | 997 | CONNECTION(P, "F1", 10) |
| r245597 | r245598 | |
| 1029 | 1029 | |
| 1030 | 1030 | // Coin Circuit |
| 1031 | 1031 | CONNECTION("COIN1", 1, "F9", 13) |
| 1032 | | |
| 1032 | |
| 1033 | 1033 | CONNECTION(CSW1, "F9", 11) |
| 1034 | 1034 | //CONNECTION("F9", 10, "F9", 13) //TODO: causes lots of bouncing, commented out since this trace is not implemented in gotcha |
| 1035 | 1035 | |
| r245597 | r245598 | |
| 1044 | 1044 | CONNECTION(V64I, "F8", 3) |
| 1045 | 1045 | CONNECTION("F8", 9, "F8", 2) |
| 1046 | 1046 | CONNECTION(CSW1, "F8", 4) |
| 1047 | | |
| 1047 | |
| 1048 | 1048 | CONNECTION("F8", 6, "H8", 12) |
| 1049 | 1049 | CONNECTION(P, "H8", 10) |
| 1050 | 1050 | CONNECTION(V16_d, "H8", 11) |
| r245597 | r245598 | |
| 1063 | 1063 | //COIN2 circuit |
| 1064 | 1064 | //CONNECTION("COIN2", 1, "F9", 1) |
| 1065 | 1065 | CONNECTION(GND, "F9", 1) //TODO: coin2 not implemented |
| 1066 | | |
| 1066 | |
| 1067 | 1067 | CONNECTION(CSW2, "F9", 3) |
| 1068 | 1068 | CONNECTION(CSW2, "H9", 10) |
| 1069 | 1069 | CONNECTION("F9", 4, "H9", 12) |
| r245597 | r245598 | |
| 1073 | 1073 | CONNECTION("H9", 9, "H9", 2) |
| 1074 | 1074 | CONNECTION(CSW2, "H9", 4) |
| 1075 | 1075 | CONNECTION(P, "H9", 1) |
| 1076 | | |
| 1076 | |
| 1077 | 1077 | CONNECTION(P, "H8", 4) |
| 1078 | 1078 | CONNECTION("H9", 6, "H8", 2) |
| 1079 | 1079 | CONNECTION(V16_d, "H8", 3) |
| r245597 | r245598 | |
| 1179 | 1179 | CONNECTION(P, "D3", 12) |
| 1180 | 1180 | CONNECTION(START_GAME, "D3", 11) |
| 1181 | 1181 | CONNECTION(SERVE_n, "D3", 13) |
| 1182 | | |
| 1182 | |
| 1183 | 1183 | //Playfield |
| 1184 | 1184 | CONNECTION(LH_SIDE, "H3", 1) |
| 1185 | 1185 | CONNECTION(TOP_BOUND, "H3", 13) |
| r245597 | r245598 | |
| 1187 | 1187 | CONNECTION("H3", 12, "H4", 2) |
| 1188 | 1188 | CONNECTION("E1", 2, "C36", 1) |
| 1189 | 1189 | CONNECTION("C36", 2, "H4", 1) |
| 1190 | | |
| 1190 | |
| 1191 | 1191 | CONNECTION(BALL_DISPLAY, "A5", 10) |
| 1192 | 1192 | CONNECTION(PSYNC, "A5", 9) |
| 1193 | 1193 | CONNECTION(BSYNC, "C3", 2) |
| r245597 | r245598 | |
| 1200 | 1200 | CONNECTION("C5", 12, "A5", 2) |
| 1201 | 1201 | CONNECTION(BSYNC, "A5", 5) |
| 1202 | 1202 | CONNECTION(VSYNC, "A5", 4) |
| 1203 | | |
| 1203 | |
| 1204 | 1204 | CONNECTION("C5", 12, "A5", 13) |
| 1205 | 1205 | CONNECTION("A5", 3, "A5", 12) |
| 1206 | 1206 | |
| r245597 | r245598 | |
| 1213 | 1213 | CONNECTION("C4", 6, "A6", 12) |
| 1214 | 1214 | CONNECTION(BP_HIT_n, "A6", 11) |
| 1215 | 1215 | CONNECTION(P, "A6", 13) |
| 1216 | | |
| 1216 | |
| 1217 | 1217 | CONNECTION("A5", 3, "A6", 4) |
| 1218 | 1218 | CONNECTION(V16_d, "A6", 2) |
| 1219 | 1219 | CONNECTION(VB_HIT_n, "A6", 3) |
| r245597 | r245598 | |
| 1241 | 1241 | |
| 1242 | 1242 | CONNECTION("B5", 6, "C5", 11) |
| 1243 | 1243 | CONNECTION("B5", 7, "C5", 9) |
| 1244 | | |
| 1244 | |
| 1245 | 1245 | CONNECTION(SU_n, "B5", 11) |
| 1246 | 1246 | CONNECTION(P, "B5", 15) |
| 1247 | 1247 | CONNECTION(P, "B5", 1) |
| r245597 | r245598 | |
| 1326 | 1326 | CONNECTION(P, "F4", 2) |
| 1327 | 1327 | CONNECTION("E4", 3, "F4", 3) |
| 1328 | 1328 | CONNECTION(START_GAME1_n, "F4", 1) |
| 1329 | | |
| 1329 | |
| 1330 | 1330 | CONNECTION(P, "F4", 10) |
| 1331 | 1331 | CONNECTION(P, "F4", 12) |
| 1332 | 1332 | CONNECTION("E4", 6, "F4", 11) |
| r245597 | r245598 | |
| 1339 | 1339 | |
| 1340 | 1340 | CONNECTION(P, "F3", 3) |
| 1341 | 1341 | CONNECTION(P, "F3", 13) |
| 1342 | | |
| 1343 | | |
| 1342 | |
| 1343 | |
| 1344 | 1344 | //CREDIT_COUNTER |
| 1345 | 1345 | CONNECTION(BONUS_COIN, "E7", 8) |
| 1346 | 1346 | CONNECTION(COIN, "E7", 9) |
| r245597 | r245598 | |
| 1364 | 1364 | CONNECTION("L8", 6, "M8", 10) |
| 1365 | 1365 | CONNECTION("L8", 2, "M8", 11) |
| 1366 | 1366 | CONNECTION("L8", 3, "M9", 13) |
| 1367 | | |
| 1367 | |
| 1368 | 1368 | CONNECTION(CREDIT2_n, "F9", 5) |
| 1369 | 1369 | CONNECTION(CREDIT2_n, "L9", 2) |
| 1370 | 1370 | CONNECTION("M9", 12, "L9", 1) |
| r245597 | r245598 | |
| 1402 | 1402 | CONNECTION(BALL_C, "S4", 2) |
| 1403 | 1403 | CONNECTION("S4", 3, "A4", 1) |
| 1404 | 1404 | CONNECTION("A4", 3, "C37", 1) |
| 1405 | | |
| 1405 | |
| 1406 | 1406 | CONNECTION(SERVE_WAIT_n, "A4", 5) |
| 1407 | 1407 | CONNECTION(BALL, "A4", 4) |
| 1408 | 1408 | |
| 1409 | | // Ball Circuit |
| 1409 | // Ball Circuit |
| 1410 | 1410 | |
| 1411 | 1411 | |
| 1412 | 1412 | // Video Summing |
| r245597 | r245598 | |
| 1428 | 1428 | |
| 1429 | 1429 | CONNECTION("VIDEO", Video::HBLANK_PIN, HSYNC) |
| 1430 | 1430 | CONNECTION("VIDEO", Video::VBLANK_PIN, "E3", 10) |
| 1431 | | |
| 1432 | 1431 | |
| 1432 | |
| 1433 | 1433 | // Audio Summing |
| 1434 | 1434 | CONNECTION("AUDIO", 1, "B9", 11) |
| 1435 | 1435 | CONNECTION("AUDIO", 2, "B9", 8) |
trunk/src/emu/bus/amiga/zorro/a590.c
| r245597 | r245598 | |
| 155 | 155 | ROMX_LOAD("390721-01.u13", 0x4000, 0x2000, CRC(00dbf615) SHA1(503940d04fb3b49eaa61100fd3a487018b35e25a), ROM_SKIP(1) | ROM_BIOS(2)) |
| 156 | 156 | ROMX_LOAD("390722-01.u12", 0x4001, 0x2000, CRC(c460cfdb) SHA1(0de457daec3b84f75e8fb344defe24ce56cda3e0), ROM_SKIP(1) | ROM_BIOS(2)) |
| 157 | 157 | |
| 158 | | // changelog v6.6: fixes dual scsi problems with the wd33c93a controller |
| 158 | // changelog v6.6: fixes dual SCSI problems with the wd33c93a controller |
| 159 | 159 | ROM_SYSTEM_BIOS(2, "v66", "Version 6.6") |
| 160 | 160 | ROMX_LOAD("390721-02.u13", 0x0000, 0x2000, CRC(c0871d25) SHA1(e155f18abb90cf820589c15e70559d3b6b391af8), ROM_SKIP(1) | ROM_BIOS(3)) |
| 161 | 161 | ROMX_LOAD("390722-02.u12", 0x0001, 0x2000, CRC(e536bbb2) SHA1(fd7f8a6da18c1b02d07eb990c2467a24183ede12), ROM_SKIP(1) | ROM_BIOS(3)) |
| 162 | 162 | ROMX_LOAD("390721-02.u13", 0x4000, 0x2000, CRC(c0871d25) SHA1(e155f18abb90cf820589c15e70559d3b6b391af8), ROM_SKIP(1) | ROM_BIOS(3)) |
| 163 | 163 | ROMX_LOAD("390722-02.u12", 0x4001, 0x2000, CRC(e536bbb2) SHA1(fd7f8a6da18c1b02d07eb990c2467a24183ede12), ROM_SKIP(1) | ROM_BIOS(3)) |
| 164 | 164 | |
| 165 | | // final commodore released version |
| 165 | // final Commodore released version |
| 166 | 166 | ROM_SYSTEM_BIOS(3, "v70", "Version 7.0") |
| 167 | 167 | ROMX_LOAD("390721-03.u13", 0x0000, 0x2000, CRC(2942747a) SHA1(dbd7648e79c753337ff3e4f491de224bf05e6bb6), ROM_SKIP(1) | ROM_BIOS(4)) |
| 168 | 168 | ROMX_LOAD("390722-03.u12", 0x0001, 0x2000, CRC(a9ccffed) SHA1(149f5bd52e2d29904e3de483b9ad772448e9278e), ROM_SKIP(1) | ROM_BIOS(4)) |
| 169 | 169 | ROMX_LOAD("390721-03.u13", 0x4000, 0x2000, CRC(2942747a) SHA1(dbd7648e79c753337ff3e4f491de224bf05e6bb6), ROM_SKIP(1) | ROM_BIOS(4)) |
| 170 | 170 | ROMX_LOAD("390722-03.u12", 0x4001, 0x2000, CRC(a9ccffed) SHA1(149f5bd52e2d29904e3de483b9ad772448e9278e), ROM_SKIP(1) | ROM_BIOS(4)) |
| 171 | 171 | |
| 172 | | // third-party upgrade rom, requires a small rom adapter pcb |
| 172 | // third-party upgrade ROM, requires a small ROM adapter pcb |
| 173 | 173 | ROM_SYSTEM_BIOS(4, "g614", "Guru-ROM 6.14") |
| 174 | 174 | ROMX_LOAD("gururom_v614.bin", 0x0000, 0x8000, CRC(04e52f93) SHA1(6da21b6f5e8f8837d64507cd8a4d5cdcac4f426b), ROM_GROUPWORD | ROM_BIOS(5)) |
| 175 | 175 | |
| r245597 | r245598 | |
| 234 | 234 | { |
| 235 | 235 | set_zorro_device(); |
| 236 | 236 | |
| 237 | | // setup dmac |
| 237 | // setup DMAC |
| 238 | 238 | m_dmac->set_address_space(m_slot->m_space); |
| 239 | 239 | m_dmac->set_rom(memregion("bootrom")->base()); |
| 240 | 240 | } |
| r245597 | r245598 | |
| 243 | 243 | { |
| 244 | 244 | set_zorro_device(); |
| 245 | 245 | |
| 246 | | // setup dmac |
| 246 | // setup DMAC |
| 247 | 247 | m_dmac->set_address_space(m_slot->m_space); |
| 248 | 248 | m_dmac->set_rom(memregion("bootrom")->base()); |
| 249 | 249 | } |
| r245597 | r245598 | |
| 258 | 258 | |
| 259 | 259 | void dmac_hdc_device::resize_ram(int config) |
| 260 | 260 | { |
| 261 | | // allocate space for ram |
| 261 | // allocate space for RAM |
| 262 | 262 | switch (config & 0x0f) |
| 263 | 263 | { |
| 264 | 264 | case 0x01: |
| r245597 | r245598 | |
| 301 | 301 | m_int6 = m_jp4->read() & 0x01; |
| 302 | 302 | resize_ram(m_dips->read() & 0x0f); |
| 303 | 303 | |
| 304 | | // then tell the dmac to start configuring |
| 304 | // then tell the DMAC to start configuring |
| 305 | 305 | m_dmac->configin_w(state); |
| 306 | 306 | } |
| 307 | 307 | |
| r245597 | r245598 | |
| 311 | 311 | m_int6 = m_jp3->read() & 0x01; |
| 312 | 312 | resize_ram(m_jp1->read() & 0x0f); |
| 313 | 313 | |
| 314 | | // then tell the dmac to start configuring |
| 314 | // then tell the DMAC to start configuring |
| 315 | 315 | m_dmac->configin_w(state); |
| 316 | 316 | } |
| 317 | 317 | |
| r245597 | r245598 | |
| 345 | 345 | |
| 346 | 346 | WRITE_LINE_MEMBER( dmac_hdc_device::scsi_irq_w ) |
| 347 | 347 | { |
| 348 | | // should be or'ed with xt-ide irq |
| 348 | // should be or'ed with xt-ide IRQ |
| 349 | 349 | m_dmac->intx_w(state); |
| 350 | 350 | } |
trunk/src/emu/sound/pokey.txt
| r245597 | r245598 | |
| 4 | 4 | 31 Jan 97 |
| 5 | 5 | |
| 6 | 6 | The PokeySound Chip Emulator is designed to emulate the functionality of the |
| 7 | | Atari POKEY Chip Hardware through 'C' Sourcecode. The emulator is able to |
| 8 | | produce sounds which are essentially identical to the original POKEY chip, |
| 9 | | including the exact distortions and pitches. |
| 7 | Atari POKEY Chip Hardware through 'C' Sourcecode. The emulator is able to |
| 8 | produce sounds which are essentially identical to the original POKEY chip, |
| 9 | including the exact distortions and pitches. |
| 10 | 10 | |
| 11 | 11 | The emulator is designed to run in a 32-bit environment. Though it can be |
| 12 | | compiled and run in a 16-bit environment, it is slow. |
| 12 | compiled and run in a 16-bit environment, it is slow. |
| 13 | 13 | |
| 14 | 14 | I would like to give special thanks to Neil Bradley. He provided excellent |
| 15 | 15 | testing support and was also the driving force behind the multiple POKEY |
| r245597 | r245598 | |
| 26 | 26 | 2) An adjustable gain. The previous releases had a built-in gain of 64. |
| 27 | 27 | |
| 28 | 28 | 3) A clipping option. Depending on the number of chips emulated and the |
| 29 | | configured gain, it is possible for the output to exceed 8-bits. |
| 29 | configured gain, it is possible for the output to exceed 8-bits. |
| 30 | 30 | Clipping can be enabled to prevent this, though it does increase the |
| 31 | | processing time. |
| 31 | processing time. |
| 32 | 32 | |
| 33 | 33 | |
| 34 | 34 | Standard Features: |
| r245597 | r245598 | |
| 36 | 36 | |
| 37 | 37 | The 'PokeySound' emulator supports the following functions: |
| 38 | 38 | |
| 39 | | 1) All polynomial sound generators: |
| 39 | 1) All polynomial sound generators: |
| 40 | 40 | a) 4-bit poly - actual bit pattern determined from sampled sound |
| 41 | 41 | b) 5-bit poly - actual bit pattern determined from sampled sound |
| 42 | 42 | c) 17-bit poly - simulated random bit pattern |
| 43 | 43 | d) 9-bit poly - derived from simulated 17-bit poly |
| 44 | | |
| 44 | |
| 45 | 45 | 2) Full support of all 'Divide by N' counter clocks: |
| 46 | 46 | a) 1.79 MHz (high limited to playback sample rate) |
| 47 | 47 | b) 64 KHz (high limited to playback sample rate) |
| r245597 | r245598 | |
| 51 | 51 | a) 8-bit - single channel |
| 52 | 52 | b) 16-bit - double channel |
| 53 | 53 | |
| 54 | | 4) Full support of all distortions |
| 54 | 4) Full support of all distortions |
| 55 | 55 | a) 5-bit poly, then 17-bit poly |
| 56 | 56 | b) 5-bit poly only |
| 57 | 57 | c) 5-bit poly, then 4-bit poly |
| r245597 | r245598 | |
| 59 | 59 | e) no poly counters (pure tone) |
| 60 | 60 | f) 5-bit poly only |
| 61 | 61 | |
| 62 | | 5) Full support of volume control |
| 62 | 5) Full support of volume control |
| 63 | 63 | |
| 64 | 64 | 6) Full support of all pitches - distortions will vary exactly as the |
| 65 | 65 | original Atari based on different pitches |
| r245597 | r245598 | |
| 84 | 84 | left in for reference. If you would still like to see the non-optimized |
| 85 | 85 | version, it's available in the 1.2 release. |
| 86 | 86 | |
| 87 | | One of the unique features of the emulator is that the processing time varies |
| 88 | | based on the frequency. Since the routine only calculates new output values |
| 89 | | when a change is sensed, the lower frequencies (which change less frequently) |
| 87 | One of the unique features of the emulator is that the processing time varies |
| 88 | based on the frequency. Since the routine only calculates new output values |
| 89 | when a change is sensed, the lower frequencies (which change less frequently) |
| 90 | 90 | will require less processing time. |
| 91 | 91 | |
| 92 | 92 | |
| 93 | 93 | Differences Between the Emulator and the Actual POKEY Chip: |
| 94 | | ----------------------------------------------------------- |
| 94 | ----------------------------------------------------------- |
| 95 | 95 | |
| 96 | | The biggest difference between the emulator and the original hardware is |
| 97 | | that the emulator emulates an 'ideal' POKEY chip. All output from the |
| 96 | The biggest difference between the emulator and the original hardware is |
| 97 | that the emulator emulates an 'ideal' POKEY chip. All output from the |
| 98 | 98 | emulator is a based on a precise square wave, whereas the output from the |
| 99 | 99 | original chip has decay. Though the output is slightly different, I |
| 100 | 100 | don't believe this difference is easily discernible. |
| 101 | 101 | |
| 102 | 102 | Another slight difference is the 17-bit/9-bit poly. Since the polynomial |
| 103 | 103 | is large (2^17 bits), I choose to create the sample using a random number |
| 104 | | generator rather than a table. I don't believe this difference is |
| 104 | generator rather than a table. I don't believe this difference is |
| 105 | 105 | significant. |
| 106 | 106 | |
| 107 | 107 | There are also a few differences which are introduced by aliasing. This is |
| 108 | 108 | a direct result of using an output sampling rate which is not identical to |
| 109 | | the original sound rate. It is most evident with high frequencies. |
| 109 | the original sound rate. It is most evident with high frequencies. |
| 110 | 110 | |
| 111 | | A final difference is the lack of support for the High-Pass Filter |
| 111 | A final difference is the lack of support for the High-Pass Filter |
| 112 | 112 | functionality. I plan to add this in a future release if necessary. |
| 113 | 113 | |
| 114 | 114 | |
| 115 | 115 | Sample/Test Application: |
| 116 | 116 | ------------------------ |
| 117 | 117 | |
| 118 | | The test program I've distributed is a 16-bit DOS application created with |
| 119 | | the Borland 'C' compiler. The only reason I used 16-bit was because I |
| 118 | The test program I've distributed is a 16-bit DOS application created with |
| 119 | the Borland 'C' compiler. The only reason I used 16-bit was because I |
| 120 | 120 | already had a set of working SB drivers in 16-bit. Since the test system |
| 121 | 121 | is dedicated to generating sounds, the performance in 16-bit is more than |
| 122 | 122 | adequate. |
| r245597 | r245598 | |
| 125 | 125 | POKEY.C |
| 126 | 126 | ======= |
| 127 | 127 | |
| 128 | | The POKEY.C file is the heart of the PokeySound Emulation program. |
| 128 | The POKEY.C file is the heart of the PokeySound Emulation program. |
| 129 | 129 | Although the routines in the file must work together, no other files are |
| 130 | | modules are required for operation. A header file, 'POKEY.H', has |
| 131 | | been included for use in other modules, and provides the necessary |
| 130 | modules are required for operation. A header file, 'POKEY.H', has |
| 131 | been included for use in other modules, and provides the necessary |
| 132 | 132 | function prototypes. I've attempted to make the routines as portable as |
| 133 | 133 | possible, so the file should compile on almost any compiler with little |
| 134 | | or no modification. |
| 134 | or no modification. |
| 135 | 135 | |
| 136 | 136 | I have made some attempts at optimizing the routines, though I am sure |
| 137 | 137 | more optimization can be done. They are currently only available in 'C'. |
| 138 | | I'll be happy to convert them to assembly language if desired. Please feel |
| 138 | I'll be happy to convert them to assembly language if desired. Please feel |
| 139 | 139 | free to send me e-mail at rfries@tcmail.frco.com. |
| 140 | 140 | |
| 141 | | The routines are easy to use. Detailed descriptions on the function calls |
| 141 | The routines are easy to use. Detailed descriptions on the function calls |
| 142 | 142 | are listed below. |
| 143 | 143 | |
| 144 | 144 | The POKEY.C module can be compiled in a 32-bit or 16-bit environment. |
| r245597 | r245598 | |
| 150 | 150 | GENERAL OVERVIEW |
| 151 | 151 | ---------------- |
| 152 | 152 | |
| 153 | | On start-up of the system, a single call should be made to Pokey_sound_init. |
| 153 | On start-up of the system, a single call should be made to Pokey_sound_init. |
| 154 | 154 | This routine will prepare the structures for sound output. This routine |
| 155 | 155 | can be called again if necessary during warm-start or other reset. |
| 156 | 156 | |
| 157 | | Once in the main loop, there are two other functions that will be used. |
| 157 | Once in the main loop, there are two other functions that will be used. |
| 158 | 158 | Whenever the system needs to write to either the AUDC or AUDF values, |
| 159 | | a call should be made to the Update_pokey_sound routine. This routine will |
| 159 | a call should be made to the Update_pokey_sound routine. This routine will |
| 160 | 160 | take care of updating the internal registers. It will pre-calculate several |
| 161 | 161 | values to help with optimization. |
| 162 | 162 | |
| 163 | | The only other routine that is called is the Pokey_process function. This |
| 163 | The only other routine that is called is the Pokey_process function. This |
| 164 | 164 | function will fill a audio buffer with a specified number of bytes. This |
| 165 | 165 | function should be called whenever a new audio buffer is required. |
| 166 | 166 | |
| r245597 | r245598 | |
| 176 | 176 | ----------------------------------------------------------------------- |
| 177 | 177 | |
| 178 | 178 | This function initializes the structures used by the PokeySound routines. |
| 179 | | This function takes three parameters: the main clock frequency, the |
| 179 | This function takes three parameters: the main clock frequency, the |
| 180 | 180 | playback frequency and the number of POKEY chips to emulate. |
| 181 | 181 | |
| 182 | 182 | The maximum number of POKEY chips emulated is configured at compile time. |
| 183 | | Though the maximum number of chips can be configured as one, the PokeySound |
| 184 | | 1.2 routines are recommended if only a single chip is to be emulated since |
| 185 | | they have will provide better performance. |
| 183 | Though the maximum number of chips can be configured as one, the PokeySound |
| 184 | 1.2 routines are recommended if only a single chip is to be emulated since |
| 185 | they have will provide better performance. |
| 186 | 186 | |
| 187 | | The main clock frequency is the frequency of the 1.79MHz source clock. |
| 188 | | To provide exact results, freq17 should be set equal to 1789790 Hz. As an |
| 189 | | alternative, freq17 can be set to an approximate frequency of 1787520 Hz. |
| 190 | | Using this approximate frequency will reduce aliasing and thus produce a |
| 187 | The main clock frequency is the frequency of the 1.79MHz source clock. |
| 188 | To provide exact results, freq17 should be set equal to 1789790 Hz. As an |
| 189 | alternative, freq17 can be set to an approximate frequency of 1787520 Hz. |
| 190 | Using this approximate frequency will reduce aliasing and thus produce a |
| 191 | 191 | clearer output signal. |
| 192 | 192 | |
| 193 | 193 | A constant has been defined for both of these values for your convenience. |
| 194 | 194 | The names are FREQ_17_EXACT and FREQ_17_APPROX. |
| 195 | 195 | |
| 196 | | The playback frequency is the frequency of the sound playback (the frequency |
| 197 | | used by the sound card). For best results, the playback frequency should |
| 196 | The playback frequency is the frequency of the sound playback (the frequency |
| 197 | used by the sound card). For best results, the playback frequency should |
| 198 | 198 | be an even division of the main clock frequency. Since most of the sounds |
| 199 | | will be generated using the 64kHz clock, I also recommend making the |
| 199 | will be generated using the 64kHz clock, I also recommend making the |
| 200 | 200 | playback frequency an even division of the 64kHz clock. |
| 201 | 201 | |
| 202 | 202 | The 64kHz clock is exactly equal to the main clock divided by 28. For |
| 203 | 203 | the playback frequency, I recommend one of the following values: |
| 204 | 204 | |
| 205 | | 1) FREQ_17_APPROX / (28*1), which is equal to 63840. Of course, most sound |
| 205 | 1) FREQ_17_APPROX / (28*1), which is equal to 63840. Of course, most sound |
| 206 | 206 | cards can't reproduce this frequency. |
| 207 | 207 | |
| 208 | 208 | 2) FREQ_17_APPROX / (28*2), which is equal to 31920. All of the newer cards |
| 209 | | will support this frequency. |
| 209 | will support this frequency. |
| 210 | 210 | |
| 211 | | 3) FREQ_17_APPROX / (28*3), which is equal to 21280. All of the SB |
| 211 | 3) FREQ_17_APPROX / (28*3), which is equal to 21280. All of the SB |
| 212 | 212 | compatibles should support this frequency. |
| 213 | 213 | |
| 214 | 214 | 4) FREQ_17_APPROX / (28*4), which is equal to 15960. This may be the |
| 215 | 215 | best choice, as it offers good sound reproduction with good performance. |
| 216 | | |
| 216 | |
| 217 | 217 | Of course, these options also assume you are using the approximate |
| 218 | 218 | frequency for the main clock as well. Any of these choices will offer the |
| 219 | 219 | best results when the main 64kHz clock is used, reasonable results when the |
| r245597 | r245598 | |
| 231 | 231 | |
| 232 | 232 | This function should be called each time an AUDC, AUDF or AUDCTL value |
| 233 | 233 | changes. This function takes four parameters: the address to change, |
| 234 | | the new value, the chip to be updated, and the gain to be used. |
| 234 | the new value, the chip to be updated, and the gain to be used. |
| 235 | 235 | The lower four bits of the address should be one of the following values: |
| 236 | 236 | |
| 237 | 237 | Addr Description |
| r245597 | r245598 | |
| 250 | 250 | the address are used. Note that this routine can no longer be called with |
| 251 | 251 | any address as it will affect the operation of the specified chip. |
| 252 | 252 | |
| 253 | | The routine pre-calculates several values that are needed by the |
| 253 | The routine pre-calculates several values that are needed by the |
| 254 | 254 | processing function. This is done to optimize performance. |
| 255 | 255 | |
| 256 | | The output will be amplified (multiplied) by gain/16 (previous releases had |
| 257 | | a built in multiplier of 4, which calculates to a gain value of 64). If the |
| 258 | | output exceeds the maximum value after then gain and clipping is enabled, |
| 256 | The output will be amplified (multiplied) by gain/16 (previous releases had |
| 257 | a built in multiplier of 4, which calculates to a gain value of 64). If the |
| 258 | output exceeds the maximum value after then gain and clipping is enabled, |
| 259 | 259 | the output will be limited to reduce distortion. |
| 260 | 260 | |
| 261 | 261 | The best value for the gain depends on the number of POKEYs emulated and |
| 262 | | the maximum volume used. The maximum possible output for each channel is 15, |
| 263 | | making the maximum possible output for a single chip to be 60. Assuming all |
| 264 | | four channels on the chip are used at full volume, a gain of 64 can be used |
| 265 | | without distortion. If 4 POKEY chips are emulated and all 16 channels are |
| 266 | | used at full volume, the gain must be no more than 16 to prevent distortion. |
| 267 | | Of course, if only a few of the 16 channels are used or not all channels are |
| 262 | the maximum volume used. The maximum possible output for each channel is 15, |
| 263 | making the maximum possible output for a single chip to be 60. Assuming all |
| 264 | four channels on the chip are used at full volume, a gain of 64 can be used |
| 265 | without distortion. If 4 POKEY chips are emulated and all 16 channels are |
| 266 | used at full volume, the gain must be no more than 16 to prevent distortion. |
| 267 | Of course, if only a few of the 16 channels are used or not all channels are |
| 268 | 268 | used at full volume, a larger gain can be used. |
| 269 | 269 | |
| 270 | 270 | To enable clipping, define the logical CLIP before compiling. This is the |
| 271 | 271 | default mode of operation as it has already been included in the POKEY.H file. |
| 272 | | Note that this is only recommended if clipping is necessary since it will |
| 272 | Note that this is only recommended if clipping is necessary since it will |
| 273 | 273 | impact the performance. |
| 274 | 274 | |
| 275 | 275 | This function has no return value (void). |
| r245597 | r245598 | |
| 280 | 280 | |
| 281 | 281 | This function calculates and fills a buffer with unsigned 8-bit mono audio. |
| 282 | 282 | This function takes two parameters: a pointer to the buffer to fill and |
| 283 | | the size of the buffer (limited to 65535). This function fills the |
| 283 | the size of the buffer (limited to 65535). This function fills the |
| 284 | 284 | buffer based on the requested size and returns. It automatically |
| 285 | 285 | updates the pointers for the next call, so subsequent calls to this function |
| 286 | 286 | will provide a continuous stream of data. |
| r245597 | r245598 | |
| 292 | 292 | |
| 293 | 293 | Selecting the correct buffer size is a careful balance. Selecting a buffer |
| 294 | 294 | size that is too small will produce noticeable clicks in the output, though |
| 295 | | selecting a size that is too large will cause a poor response time and |
| 295 | selecting a size that is too large will cause a poor response time and |
| 296 | 296 | possible delays in the system when the new buffer is filled. |
| 297 | 297 | |
| 298 | 298 | This function has no return value (void). |
| r245597 | r245598 | |
| 303 | 303 | |
| 304 | 304 | PokeySound is Copyright(c) 1996-1997 by Ron Fries |
| 305 | 305 | |
| 306 | | This library is free software; you can redistribute it and/or modify it under |
| 307 | | the terms of version 2 of the GNU Library General Public License as published |
| 306 | This library is free software; you can redistribute it and/or modify it under |
| 307 | the terms of version 2 of the GNU Library General Public License as published |
| 308 | 308 | by the Free Software Foundation. |
| 309 | 309 | |
| 310 | | This library is distributed in the hope that it will be useful, but WITHOUT |
| 311 | | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 312 | | FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more |
| 310 | This library is distributed in the hope that it will be useful, but WITHOUT |
| 311 | ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS |
| 312 | FOR A PARTICULAR PURPOSE. See the GNU Library General Public License for more |
| 313 | 313 | details. |
| 314 | 314 | |
| 315 | | To obtain a copy of the GNU Library General Public License, write to the Free |
| 315 | To obtain a copy of the GNU Library General Public License, write to the Free |
| 316 | 316 | Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. |
| 317 | 317 | |
| 318 | | Any permitted reproduction of these routines, in whole or in part, must bear |
| 319 | | this legend. |
| 318 | Any permitted reproduction of these routines, in whole or in part, must bear |
| 319 | this legend. |
trunk/src/mame/drivers/goldnpkr.c
| r245597 | r245598 | |
| 20 | 20 | * Jack Potten's Poker (set 6), 198?, Bootleg. |
| 21 | 21 | * Jack Potten's Poker (set 7, Royale GFX), 198?, Bootleg. |
| 22 | 22 | * Good Luck, 198?, Unknown. |
| 23 | | * Super Double (french), 198?, Karateco. |
| 23 | * Super Double (French), 198?, Karateco. |
| 24 | 24 | * Jack Potten's Poker (NGold, set 1), 198?, Unknown. |
| 25 | 25 | * Jack Potten's Poker (NGold, set 2), 198?, Unknown. |
| 26 | 26 | * Jack Potten's Poker (NGold, set 3), 198?, Unknown. |
| r245597 | r245598 | |
| 104 | 104 | * Falcons Wild - World Wide Poker (VK set 1), 1990, Video Klein. |
| 105 | 105 | * Falcons Wild - World Wide Poker (VK set 2), 1990, Video Klein. |
| 106 | 106 | * Falcons Wild - Wild Card 1991, 1991, TVG. |
| 107 | | * PlayMan Poker (german), 1981, PM / Beck Elektronik. |
| 107 | * PlayMan Poker (German), 1981, PM / Beck Elektronik. |
| 108 | 108 | * Super Loco 93 (Spanish, set 1), 1993, Unknown. |
| 109 | 109 | * Super Loco 93 (Spanish, set 2), 1993, Unknown. |
| 110 | 110 | * Royale (set 1), 198?, Unknown. |
| r245597 | r245598 | |
| 119 | 119 | * Genie, 198?, Video Fun Games Ltd. |
| 120 | 120 | * Silver Game, 1983, Unknown. |
| 121 | 121 | * Casino Poker (Ver PM86LO-35-5, German), 1987, PM / Beck Elektronik. |
| 122 | | * "Unknown french poker game", 198?, Unknown. |
| 122 | * "Unknown French poker game", 198?, Unknown. |
| 123 | 123 | * "Unknown encrypted poker game", 198?, Unknown. |
| 124 | 124 | * Bonne Chance! (Golden Poker prequel hardware), 198?, Unknown. |
| 125 | 125 | * Mundial/Mondial (Italian/French), 1987, Unknown. |
| r245597 | r245598 | |
| 215 | 215 | Maybe some settings can enable the use of them... |
| 216 | 216 | |
| 217 | 217 | |
| 218 | | * Witch Card (spanish sets) |
| 218 | * Witch Card (Spanish sets) |
| 219 | 219 | |
| 220 | 220 | This game is derivated from Golden Poker. |
| 221 | 221 | |
| r245597 | r245598 | |
| 336 | 336 | The game has 2 service switches/buttons: |
| 337 | 337 | One for settings, and other just for bookkeeping. |
| 338 | 338 | |
| 339 | | Here the original Service Card (in german), and the english translation: |
| 339 | Here the original Service Card (in German), and the English translation: |
| 340 | 340 | _____________________________________ _____________________________________ |
| 341 | 341 | | | | | |
| 342 | 342 | | SERVICE ANLEITUNG | | SERVICE MANUAL | |
| r245597 | r245598 | |
| 772 | 772 | - Fixed the visible area based on M6845 registers. |
| 773 | 773 | - Improved the lamps layouts to be more realistic. |
| 774 | 774 | - Added Good Luck (potten's poker hybrid running in goldnpkr hardware). |
| 775 | | - Added Buena Suerte (spanish) x 2 sets. |
| 775 | - Added Buena Suerte (Spanish) x 2 sets. |
| 776 | 776 | - Added set Royale. |
| 777 | | - Added Witch Card and spanish variants. |
| 778 | | - Added Super Loco 93 (spanish) x 2 sets. |
| 777 | - Added Witch Card and Spanish variants. |
| 778 | - Added Super Loco 93 (Spanish) x 2 sets. |
| 779 | 779 | - Renamed set goldnpkc to pottnpkr (parent Jack Potten's Poker set). |
| 780 | 780 | - Renamed set jokerpkr to potnpkra, since is another Jack Potten's Poker set. |
| 781 | 781 | - Added other 2 clones of Jack Potten's Poker. |
| r245597 | r245598 | |
| 817 | 817 | [2009-09-05] |
| 818 | 818 | |
| 819 | 819 | - Added 2 new Witch Card sets. |
| 820 | | - Reworked inputs for Witch Card (german set 1). |
| 821 | | - Created new inputs for Witch Card (english, witch game, lamps). |
| 820 | - Reworked inputs for Witch Card (German set 1). |
| 821 | - Created new inputs for Witch Card (English, witch game, lamps). |
| 822 | 822 | - Added and connected lamps for both sets. |
| 823 | 823 | - Added minimal bet and 50/60 Hz. switches to both sets. |
| 824 | | - Added DIP switches info for Witch Card (german, set 2). |
| 824 | - Added DIP switches info for Witch Card (German, set 2). |
| 825 | 825 | |
| 826 | 826 | - Added Genius, running in a modified Golden Poker board. |
| 827 | 827 | |
| r245597 | r245598 | |
| 844 | 844 | |
| 845 | 845 | [2010-11-18] |
| 846 | 846 | |
| 847 | | - Added Karateco Super Double (french) |
| 847 | - Added Karateco Super Double (French) |
| 848 | 848 | - Extended ROM space for goldnpkr game to include the 0x2000..0x3fff range |
| 849 | 849 | |
| 850 | 850 | |
| r245597 | r245598 | |
| 4362 | 4362 | ROM_LOAD( "epoxy_82s129.bin", 0x0100, 0x0100, CRC(f0c012b1) SHA1(5502977404172e8c5b9fbf305581a406668ad1d9) ) /* original epoxy block PROM */ |
| 4363 | 4363 | ROM_END |
| 4364 | 4364 | |
| 4365 | | /* Witch Card (spanish, set 1) |
| 4365 | /* Witch Card (Spanish, set 1) |
| 4366 | 4366 | Unknown argentine manufacturer. |
| 4367 | 4367 | */ |
| 4368 | 4368 | ROM_START( witchcda ) |
| r245597 | r245598 | |
| 4382 | 4382 | ROM_LOAD( "82s129.9c", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) /* PROM dump needed */ |
| 4383 | 4383 | ROM_END |
| 4384 | 4384 | |
| 4385 | | /* Witch Card (spanish, set 2) |
| 4385 | /* Witch Card (Spanish, set 2) |
| 4386 | 4386 | Unknown argentine manufacturer. |
| 4387 | 4387 | */ |
| 4388 | 4388 | ROM_START( witchcdb ) |
| r245597 | r245598 | |
| 4402 | 4402 | ROM_LOAD( "82s129.9c", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) /* PROM dump needed */ |
| 4403 | 4403 | ROM_END |
| 4404 | 4404 | |
| 4405 | | /* Witch Card (english, no witch game) |
| 4405 | /* Witch Card (English, no witch game) |
| 4406 | 4406 | Hack? |
| 4407 | 4407 | */ |
| 4408 | 4408 | ROM_START( witchcdc ) |
| r245597 | r245598 | |
| 4424 | 4424 | |
| 4425 | 4425 | /*************************************** |
| 4426 | 4426 | |
| 4427 | | Witch Card (german, WC3050, set 1 ) |
| 4427 | Witch Card (German, WC3050, set 1 ) |
| 4428 | 4428 | |
| 4429 | 4429 | TV GAME ELEKTRONIK 1994 |
| 4430 | 4430 | PROMA |
| r245597 | r245598 | |
| 4477 | 4477 | ROM_LOAD( "24s10_epoxy.bin", 0x0100, 0x0100, CRC(ddfd7034) SHA1(78dee69ab4ba759485ee7f00446c2d86f08cc50f) ) /* original epoxy block PROM */ |
| 4478 | 4478 | ROM_END |
| 4479 | 4479 | |
| 4480 | | /* Witch Card (english, witch game, lights) |
| 4480 | /* Witch Card (English, witch game, lights) |
| 4481 | 4481 | PCB by PM. Hybrid hardware. |
| 4482 | 4482 | |
| 4483 | 4483 | Copyright 1983/84/85 |
| r245597 | r245598 | |
| 4539 | 4539 | |
| 4540 | 4540 | /*************************************** |
| 4541 | 4541 | |
| 4542 | | Witch Card (german, WC3050, set 2 ) |
| 4542 | Witch Card (German, WC3050, set 2 ) |
| 4543 | 4543 | |
| 4544 | 4544 | TV GAME ELEKTRONIK 1994 |
| 4545 | 4545 | PROMA |
| r245597 | r245598 | |
| 4882 | 4882 | ROM_END |
| 4883 | 4883 | |
| 4884 | 4884 | ROM_START( bsuertel ) |
| 4885 | | ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), english settings */ |
| 4885 | ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), English settings */ |
| 4886 | 4886 | ROM_LOAD( "bslacer.128", 0x4000, 0x4000, CRC(edc254f4) SHA1(20e5543e59bfd67a0afec7cbeeb7000f6bba6c69) ) |
| 4887 | 4887 | |
| 4888 | 4888 | ROM_REGION( 0x3000, "gfx1", 0 ) |
| r245597 | r245598 | |
| 4899 | 4899 | ROM_END |
| 4900 | 4900 | |
| 4901 | 4901 | ROM_START( bsuertem ) |
| 4902 | | ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), english settings, set 2*/ |
| 4902 | ROM_REGION( 0x10000, "maincpu", 0 ) /* bslacer128: Buena Suerte! (portugues), English settings, set 2*/ |
| 4903 | 4903 | ROM_LOAD( "bslacer.256", 0x0000, 0x8000, CRC(9f8a899a) SHA1(a1f3d0635b309d4734289b7ff48eceda69dfd3d0) ) |
| 4904 | 4904 | |
| 4905 | 4905 | ROM_REGION( 0x3000, "gfx1", 0 ) |
| r245597 | r245598 | |
| 5464 | 5464 | mc6845 video chip |
| 5465 | 5465 | 10mhz (?) xtal |
| 5466 | 5466 | |
| 5467 | | There are french strings related to the game, so maybe is |
| 5467 | There are French strings related to the game, so maybe is |
| 5468 | 5468 | a leftover, or maybe there is a unknown way to switch the |
| 5469 | 5469 | language. |
| 5470 | 5470 | |
| r245597 | r245598 | |
| 5544 | 5544 | Unknown poker game, set 1. |
| 5545 | 5545 | 198?. |
| 5546 | 5546 | |
| 5547 | | There are french strings related to the game into |
| 5547 | There are French strings related to the game into |
| 5548 | 5548 | the program ROM. |
| 5549 | 5549 | |
| 5550 | 5550 | The dump lacks of 1 program ROM located at 17a. |
| r245597 | r245598 | |
| 5606 | 5606 | |
| 5607 | 5607 | /************************************ |
| 5608 | 5608 | |
| 5609 | | Jolli Witch (german) |
| 5609 | Jolli Witch (German) |
| 5610 | 5610 | Epoxy CPU box. |
| 5611 | 5611 | |
| 5612 | 5612 | Using the whole addressing |
trunk/src/mess/drivers/hh_hmcs40.c
| r245597 | r245598 | |
| 187 | 187 | int state = active_state[y] >> x & 1; |
| 188 | 188 | char buf1[0x10]; // lampyx |
| 189 | 189 | char buf2[0x10]; // y.x |
| 190 | | |
| 190 | |
| 191 | 191 | if (x == m_display_maxx) |
| 192 | 192 | { |
| 193 | 193 | // always-on if selected |
| r245597 | r245598 | |
| 262 | 262 | { |
| 263 | 263 | line = line ? 1 : 0; |
| 264 | 264 | state = state ? 1 : 0; |
| 265 | | |
| 265 | |
| 266 | 266 | if (state != m_int[line]) |
| 267 | 267 | { |
| 268 | 268 | if (machine().phase() >= MACHINE_PHASE_RESET) |
| r245597 | r245598 | |
| 531 | 531 | // R0x-R6x,D0,D1: vfd matrix plate |
| 532 | 532 | int shift = offset * 4; |
| 533 | 533 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 534 | | |
| 534 | |
| 535 | 535 | // update display |
| 536 | 536 | UINT8 grid = BITSWAP8(m_grid,0,1,2,3,4,5,6,7); |
| 537 | 537 | UINT32 plate = BITSWAP32(m_plate,31,30,27,0,1,2,3,4,5,6,7,8,9,10,11,24,25,26,29,28,23,22,21,20,19,18,17,16,15,14,13,12); |
| r245597 | r245598 | |
| 550 | 550 | m_inp_mux = inp_mux; |
| 551 | 551 | update_int0(); |
| 552 | 552 | } |
| 553 | | |
| 553 | |
| 554 | 554 | // D8-D15: vfd matrix grid |
| 555 | 555 | m_grid = data >> 8 & 0xff; |
| 556 | | |
| 556 | |
| 557 | 557 | // D0,D1: plate 12,13 (update display there) |
| 558 | 558 | plate_w(space, 7, data & 3); |
| 559 | 559 | } |
| r245597 | r245598 | |
| 784 | 784 | // R13: speaker on |
| 785 | 785 | if (offset == HMCS40_PORT_R1X && data & 8) |
| 786 | 786 | m_speaker_volume = CDKONG_SPEAKER_MAX; |
| 787 | | |
| 787 | |
| 788 | 788 | // R0x-R6x: vfd matrix plate |
| 789 | 789 | int shift = offset * 4; |
| 790 | 790 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| r245597 | r245598 | |
| 843 | 843 | MCFG_TIMER_DRIVER_ADD_PERIODIC("speaker_decay", cdkong_state, speaker_decay_sim, attotime::from_msec(CDKONG_SPEAKER_DECAY)) |
| 844 | 844 | MCFG_TIMER_DRIVER_ADD_PERIODIC("display_decay", hh_hmcs40_state, display_decay_tick, attotime::from_msec(1)) |
| 845 | 845 | MCFG_DEFAULT_LAYOUT(layout_hh_hmcs40_test) |
| 846 | | |
| 846 | |
| 847 | 847 | /* no video! */ |
| 848 | 848 | |
| 849 | 849 | /* sound hardware */ |
| r245597 | r245598 | |
| 899 | 899 | { |
| 900 | 900 | // D0: speaker out |
| 901 | 901 | m_speaker->level_w(data & 1); |
| 902 | | |
| 902 | |
| 903 | 903 | // D1: speaker on? |
| 904 | 904 | |
| 905 | 905 | // D2-D15: vfd matrix plate |
| r245597 | r245598 | |
| 912 | 912 | // R10,R11: input mux |
| 913 | 913 | if (offset == HMCS40_PORT_R1X) |
| 914 | 914 | m_inp_mux = data & 3; |
| 915 | | |
| 915 | |
| 916 | 916 | // R1x-R3x: vfd matrix grid |
| 917 | 917 | int shift = (offset - HMCS40_PORT_R1X) * 4; |
| 918 | 918 | m_grid = (m_grid & ~(0xf << shift)) | (data << shift); |
| r245597 | r245598 | |
| 979 | 979 | * board label Coleco 75690 |
| 980 | 980 | * Hitachi HD38820A28/29 MCU |
| 981 | 981 | * cyan/red VFD display Futaba DM-34Z 2A, with color overlay |
| 982 | | |
| 982 | |
| 983 | 983 | known releases: |
| 984 | 984 | - Japan: Super Pack Monster, by Gakken |
| 985 | 985 | - USA: Pac-Man, published by Coleco (name-license from Midway) |
| r245597 | r245598 | |
| 1105 | 1105 | - P1 Left: Ms. Pac-Man (default game) |
| 1106 | 1106 | - P1 Down: Head-to-Head Ms. Pac-Man (2-player mode) |
| 1107 | 1107 | - P1 Up: Demo |
| 1108 | | |
| 1108 | |
| 1109 | 1109 | BTANB note: in demo-mode, she hardly ever walks to the upper two rows |
| 1110 | 1110 | |
| 1111 | 1111 | NOTE!: MESS external artwork is recommended |
| r245597 | r245598 | |
| 1439 | 1439 | // R0x-R6x,D8: vfd matrix plate |
| 1440 | 1440 | int shift = offset * 4; |
| 1441 | 1441 | m_plate = (m_plate & ~(0xf << shift)) | (data << shift); |
| 1442 | | |
| 1442 | |
| 1443 | 1443 | // update display |
| 1444 | 1444 | UINT32 plate = BITSWAP32(m_plate,31,30,24,25,26,27,28,15,14,29,13,12,11,10,9,8,7,6,5,4,3,2,1,0,16,17,18,19,20,21,22,23); |
| 1445 | 1445 | display_matrix(30, 8, plate, m_grid); |
| r245597 | r245598 | |
| 1553 | 1553 | m_inp_mux = inp_mux; |
| 1554 | 1554 | update_int0(); |
| 1555 | 1555 | } |
| 1556 | | |
| 1556 | |
| 1557 | 1557 | // D7-D15: vfd matrix grid |
| 1558 | 1558 | m_grid = data >> 7 & 0x1ff; |
| 1559 | | |
| 1559 | |
| 1560 | 1560 | // D0-D4: more plates |
| 1561 | 1561 | m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x1f0000); |
| 1562 | 1562 | prepare_display(); |
| r245597 | r245598 | |
| 1674 | 1674 | m_inp_mux = inp_mux; |
| 1675 | 1675 | update_int1(); |
| 1676 | 1676 | } |
| 1677 | | |
| 1677 | |
| 1678 | 1678 | // D6-D15: vfd matrix grid |
| 1679 | 1679 | m_grid = data >> 6 & 0x3ff; |
| 1680 | | |
| 1680 | |
| 1681 | 1681 | // D0-D3,D5: more plates |
| 1682 | 1682 | m_plate = (m_plate & 0x00ffff) | (data << 16 & 0x2f0000); |
| 1683 | 1683 | prepare_display(); |
trunk/src/mess/drivers/msx.c
| r245597 | r245598 | |
| 8148 | 8148 | COMP(1983, canonv8, 0, 0, canonv8, msx, driver_device, 0, "Canon", "V-8 (MSX1)", 0) |
| 8149 | 8149 | COMP(1983, canonv10, canonv20, 0, canonv10, msx, driver_device, 0, "Canon", "V-10 (MSX1)", 0) |
| 8150 | 8150 | COMP(1983, canonv20, 0, 0, canonv20, msx, driver_device, 0, "Canon", "V-20 (MSX1)", 0) |
| 8151 | | COMP(1983, canonv20e, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20E (MSX1)", 0) // Different euro keyboard layout? |
| 8152 | | COMP(1983, canonv20f, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20F (MSX1)", 0) // Different french keyboard layout? |
| 8153 | | COMP(1983, canonv20g, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20G (MSX1)", 0) // Different german keyboard layout? |
| 8154 | | COMP(1983, canonv20s, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20S (MSX1)", 0) // Different spanish keyboard layout? |
| 8151 | COMP(1983, canonv20e, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20E (MSX1)", 0) // Different Euro keyboard layout? |
| 8152 | COMP(1983, canonv20f, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20F (MSX1)", 0) // Different French keyboard layout? |
| 8153 | COMP(1983, canonv20g, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20G (MSX1)", 0) // Different German keyboard layout? |
| 8154 | COMP(1983, canonv20s, canonv20, 0, canonv20, msx, driver_device, 0, "Canon", "V-20S (MSX1)", 0) // Different Spanish keyboard layout? |
| 8155 | 8155 | COMP(1984, mx10, 0, 0, mx10, msx, driver_device, 0, "Casio", "MX-10 (MSX1)", 0) |
| 8156 | 8156 | COMP(1984, mx101, mx10, 0, mx101, msx, driver_device, 0, "Casio", "MX-101 (MSX1)", 0) |
| 8157 | 8157 | COMP(1984, mx15, mx10, 0, mx15, msx, driver_device, 0, "Casio", "MX-15 (MSX1)", 0) |
trunk/src/mess/machine/megacdcd.c
| r245597 | r245598 | |
| 1 | | /* CD controller code from megacd.c, used by Sega Cd / Mega CD */ |
| 1 | /* CD controller code from megacd.c, used by Sega CD / Mega CD */ |
| 2 | 2 | |
| 3 | 3 | /* todo: cleanup(!!), make more generic, unifiy implementation with NeoCD, turn into a device and move to the proper lc89510.c file |
| 4 | 4 | currently this is a bit of a mix of system specific bits, incomplete implementations etc. as well as a rather kludgy combination |
| r245597 | r245598 | |
| 217 | 217 | CLEAR_CDD_RESULT |
| 218 | 218 | UINT32 msf; |
| 219 | 219 | CDD_STATUS &= 0xFF; |
| 220 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 220 | if(segacd.cd == NULL) // no CD is there, bail out |
| 221 | 221 | return; |
| 222 | 222 | CDD_STATUS |= SCD_STATUS; |
| 223 | 223 | msf = lba_to_msf_alt(SCD_CURLBA+150); |
| r245597 | r245598 | |
| 233 | 233 | UINT32 msf; |
| 234 | 234 | CDD_STATUS &= 0xFF; |
| 235 | 235 | // UINT32 end_msf = ; |
| 236 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 236 | if(segacd.cd == NULL) // no CD is there, bail out |
| 237 | 237 | return; |
| 238 | 238 | CDD_STATUS |= SCD_STATUS; |
| 239 | 239 | elapsedlba = SCD_CURLBA - segacd.toc->tracks[ cdrom_get_track(segacd.cd, SCD_CURLBA) ].logframeofs; |
| r245597 | r245598 | |
| 248 | 248 | { |
| 249 | 249 | CLEAR_CDD_RESULT |
| 250 | 250 | CDD_STATUS &= 0xFF; |
| 251 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 251 | if(segacd.cd == NULL) // no CD is there, bail out |
| 252 | 252 | return; |
| 253 | 253 | CDD_STATUS |= SCD_STATUS; |
| 254 | 254 | SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1; |
| r245597 | r245598 | |
| 259 | 259 | { |
| 260 | 260 | CLEAR_CDD_RESULT |
| 261 | 261 | CDD_STATUS &= 0xFF; |
| 262 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 262 | if(segacd.cd == NULL) // no CD is there, bail out |
| 263 | 263 | return; |
| 264 | 264 | CDD_STATUS |= SCD_STATUS; |
| 265 | 265 | |
| r245597 | r245598 | |
| 276 | 276 | { |
| 277 | 277 | CLEAR_CDD_RESULT |
| 278 | 278 | CDD_STATUS &= 0xFF; |
| 279 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 279 | if(segacd.cd == NULL) // no CD is there, bail out |
| 280 | 280 | return; |
| 281 | 281 | CDD_STATUS |= SCD_STATUS; |
| 282 | 282 | CDD_MIN = 1; // first |
| r245597 | r245598 | |
| 291 | 291 | int last_track = cdrom_get_last_track(segacd.cd); |
| 292 | 292 | |
| 293 | 293 | CDD_STATUS &= 0xFF; |
| 294 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 294 | if(segacd.cd == NULL) // no CD is there, bail out |
| 295 | 295 | return; |
| 296 | 296 | CDD_STATUS |= SCD_STATUS; |
| 297 | 297 | |
| r245597 | r245598 | |
| 323 | 323 | int last_track = cdrom_get_last_track(segacd.cd); |
| 324 | 324 | |
| 325 | 325 | CDD_STATUS &= 0xFF; |
| 326 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 326 | if(segacd.cd == NULL) // no CD is there, bail out |
| 327 | 327 | return; |
| 328 | 328 | CDD_STATUS |= SCD_STATUS; |
| 329 | 329 | |
| r245597 | r245598 | |
| 359 | 359 | CLEAR_CDD_RESULT |
| 360 | 360 | UINT32 msf = getmsf_from_regs(); |
| 361 | 361 | SCD_CURLBA = msf_to_lba(msf)-150; |
| 362 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 362 | if(segacd.cd == NULL) // no CD is there, bail out |
| 363 | 363 | return; |
| 364 | 364 | UINT32 end_msf = segacd.toc->tracks[ cdrom_get_track(segacd.cd, SCD_CURLBA) + 1 ].logframeofs; |
| 365 | 365 | SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1; |
| r245597 | r245598 | |
| 384 | 384 | CLEAR_CDD_RESULT |
| 385 | 385 | UINT32 msf = getmsf_from_regs(); |
| 386 | 386 | SCD_CURLBA = msf_to_lba(msf)-150; |
| 387 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 387 | if(segacd.cd == NULL) // no CD is there, bail out |
| 388 | 388 | return; |
| 389 | 389 | SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1; |
| 390 | 390 | LC8951UpdateHeader(); |
| r245597 | r245598 | |
| 417 | 417 | { |
| 418 | 418 | CLEAR_CDD_RESULT |
| 419 | 419 | STOP_CDC_READ |
| 420 | | if(segacd.cd == NULL) // no cd is there, bail out |
| 420 | if(segacd.cd == NULL) // no CD is there, bail out |
| 421 | 421 | return; |
| 422 | 422 | SCD_CURTRK = cdrom_get_track(segacd.cd, SCD_CURLBA)+1; |
| 423 | 423 | SCD_STATUS = CDD_PLAYINGCDDA; |
trunk/src/mess/video/911_chr.h
| r245597 | r245598 | |
| 12 | 12 | I don't know how close to this standard the character sets used by the |
| 13 | 13 | 911 VDT are. |
| 14 | 14 | |
| 15 | | The japanese terminal uses 8-bit character codes. The 128 first characters |
| 15 | The Japanese terminal uses 8-bit character codes. The 128 first characters |
| 16 | 16 | are identical to the US character set (except that '\' is replaced by the |
| 17 | 17 | Yen symbol), and the next 128 characters include the katakana syllabus. |
| 18 | 18 | Kanji ideograms are not supported in this scheme. |
| 19 | 19 | |
| 20 | | The arabic terminal uses 8-bit character codes, too. It requires |
| 20 | The Arabic terminal uses 8-bit character codes, too. It requires |
| 21 | 21 | additional code in the TI990 OS for correct operation, as the keyboard |
| 22 | 22 | returns codes for isolated characters (i.e. without ligatures), which need |
| 23 | 23 | to be substituted with codes with correct context-dependent ligatures. |
| 24 | 24 | And both OS and application programs need to support the fact that the |
| 25 | 25 | writing direction can be either right-to-left or left-to-right, according |
| 26 | | to whether the characters are latin or arabic. |
| 26 | to whether the characters are Latin or Arabic. |
| 27 | 27 | |
| 28 | 28 | As the original ROMs have not been dumped yet, I recreated the matrices |
| 29 | 29 | from various matrix printouts in TI documentation. |
| 30 | 30 | */ |
| 31 | 31 | /* |
| 32 | | The arabic character set is not implemented, because documentation is ambiguous |
| 32 | The Arabic character set is not implemented, because documentation is ambiguous |
| 33 | 33 | (it says there are 115 characters, but I can hardly see 80 characters in the |
| 34 | 34 | attached table), and the character matrices are not documented. |
| 35 | 35 | */ |
| r245597 | r245598 | |
| 47 | 47 | /* extra symbols for national character sets */ |
| 48 | 48 | char_defs_pound = char_defs_katakana_base+128, /* pound sign (UK 0x23, French WP 0x23) */ |
| 49 | 49 | char_defs_yen, /* yen sign (Japan 0x5C) */ |
| 50 | | char_defs_auml, /* latin small letter a with diaeresis (Swedish/Finish 0x7B, German 0x7B) */ |
| 51 | | char_defs_Auml, /* latin capital letter A with diaeresis (Swedish/Finish 0x5B, German 0x5B) */ |
| 52 | | char_defs_Aring, /* latin capital letter A with ring above (Swedish/Finish 0x5D, Norwegian/Danish 0x5D) */ |
| 53 | | char_defs_uuml, /* latin small letter u with diaeresis (Swedish/Finish 0x7E, German 0x7D) */ |
| 54 | | char_defs_aring, /* latin small letter a with ring above (Swedish/Finish 0x7D, Norwegian/Danish 0x7D) */ |
| 55 | | char_defs_Uuml, /* latin capital letter U with diaeresis (German 0x5D) */ |
| 56 | | char_defs_ouml, /* latin small letter o with diaeresis (German 0x7C) */ |
| 57 | | char_defs_Ouml, /* latin capital letter O with diaeresis (German 0x5C) */ |
| 58 | | char_defs_szlig, /* latin small letter sharp s (German 0x7E) */ |
| 59 | | char_defs_aelig, /* latin small letter ae (Norwegian/Danish 0x7B) */ |
| 60 | | char_defs_AElig, /* latin capital letter AE (Norwegian/Danish 0x5B) */ |
| 61 | | char_defs_oslash, /* latin small letter o with stroke (Norwegian/Danish 0x7C) */ |
| 62 | | char_defs_Oslash, /* latin capital letter O with stroke (Norwegian/Danish 0x5C) */ |
| 63 | | char_defs_agrave, /* latin small letter a with grave (French WP 0x40) */ |
| 50 | char_defs_auml, /* Latin small letter a with diaeresis (Swedish/Finish 0x7B, German 0x7B) */ |
| 51 | char_defs_Auml, /* Latin capital letter A with diaeresis (Swedish/Finish 0x5B, German 0x5B) */ |
| 52 | char_defs_Aring, /* Latin capital letter A with ring above (Swedish/Finish 0x5D, Norwegian/Danish 0x5D) */ |
| 53 | char_defs_uuml, /* Latin small letter u with diaeresis (Swedish/Finish 0x7E, German 0x7D) */ |
| 54 | char_defs_aring, /* Latin small letter a with ring above (Swedish/Finish 0x7D, Norwegian/Danish 0x7D) */ |
| 55 | char_defs_Uuml, /* Latin capital letter U with diaeresis (German 0x5D) */ |
| 56 | char_defs_ouml, /* Latin small letter o with diaeresis (German 0x7C) */ |
| 57 | char_defs_Ouml, /* Latin capital letter O with diaeresis (German 0x5C) */ |
| 58 | char_defs_szlig, /* Latin small letter sharp s (German 0x7E) */ |
| 59 | char_defs_aelig, /* Latin small letter ae (Norwegian/Danish 0x7B) */ |
| 60 | char_defs_AElig, /* Latin capital letter AE (Norwegian/Danish 0x5B) */ |
| 61 | char_defs_oslash, /* Latin small letter o with stroke (Norwegian/Danish 0x7C) */ |
| 62 | char_defs_Oslash, /* Latin capital letter O with stroke (Norwegian/Danish 0x5C) */ |
| 63 | char_defs_agrave, /* Latin small letter a with grave (French WP 0x40) */ |
| 64 | 64 | char_defs_deg, /* degree sign (French WP 0x5B) */ |
| 65 | | char_defs_ccedil, /* latin small letter c with cedilla (French WP 0x5C) */ |
| 65 | char_defs_ccedil, /* Latin small letter c with cedilla (French WP 0x5C) */ |
| 66 | 66 | char_defs_sect, /* section sign (French WP 0x5D) */ |
| 67 | | char_defs_egrave, /* latin small letter e with grave (French WP 0x7B) */ |
| 68 | | char_defs_ugrave, /* latin small letter u with grave (French WP 0x7C) */ |
| 69 | | char_defs_eacute, /* latin small letter e with acute (French WP 0x7D) */ |
| 67 | char_defs_egrave, /* Latin small letter e with grave (French WP 0x7B) */ |
| 68 | char_defs_ugrave, /* Latin small letter u with grave (French WP 0x7C) */ |
| 69 | char_defs_eacute, /* Latin small letter e with acute (French WP 0x7D) */ |
| 70 | 70 | char_defs_uml, /* diaeresis (French WP 0x7E) */ |
| 71 | 71 | |
| 72 | 72 | char_defs_count /* total character count */ |
| r245597 | r245598 | |
| 87 | 87 | { 0x23, char_defs_pound } |
| 88 | 88 | }; |
| 89 | 89 | |
| 90 | | /* One japan-specific character (see below for the 128 additionnal characters) */ |
| 90 | /* One Japan-specific character (see below for the 128 additionnal characters) */ |
| 91 | 91 | static const char_override_t japanese_overrides[1] = |
| 92 | 92 | { |
| 93 | 93 | { 0x5C, char_defs_yen } |
| 94 | 94 | }; |
| 95 | 95 | |
| 96 | | /* 5 sweden/finland-specific characters */ |
| 96 | /* 5 Sweden/Finland-specific characters */ |
| 97 | 97 | static const char_override_t swedish_overrides[/*5*/7] = |
| 98 | 98 | { |
| 99 | 99 | { 0x7B, char_defs_auml }, |
| r245597 | r245598 | |
| 106 | 106 | { 0x7C, char_defs_ouml } |
| 107 | 107 | }; |
| 108 | 108 | |
| 109 | | /* 7 german-specific characters */ |
| 109 | /* 7 German-specific characters */ |
| 110 | 110 | static const char_override_t german_overrides[7] = |
| 111 | 111 | { |
| 112 | 112 | { 0x5D, char_defs_Uuml }, |
| r245597 | r245598 | |
| 118 | 118 | { 0x5B, char_defs_Auml } /* 945423-9701 rev. B p. 1-10 says 0x5D, but it must be a mistake */ |
| 119 | 119 | }; |
| 120 | 120 | |
| 121 | | /* 6 norway/denmark-specific characters */ |
| 121 | /* 6 Norway/Denmark-specific characters */ |
| 122 | 122 | static const char_override_t norwegian_overrides[6] = |
| 123 | 123 | { |
| 124 | 124 | { 0x5D, char_defs_Aring }, |
| r245597 | r245598 | |
| 129 | 129 | { 0x5C, char_defs_Oslash} |
| 130 | 130 | }; |
| 131 | 131 | |
| 132 | | /* 9 french-specific characters (word-processing model only: the data-processing model uses |
| 132 | /* 9 French-specific characters (word-processing model only: the data-processing model uses |
| 133 | 133 | the US character set, although the keyboard mapping is different from the US model) */ |
| 134 | 134 | /* WARNING: I have created the character matrices from scratch, as I have no printout of |
| 135 | 135 | the original matrices. */ |
| r245597 | r245598 | |
| 1690 | 1690 | }, |
| 1691 | 1691 | |
| 1692 | 1692 | |
| 1693 | | /* 128 additional characters for japanese terminals */ |
| 1693 | /* 128 additional characters for Japanese terminals */ |
| 1694 | 1694 | { /* 0x80 */ |
| 1695 | 1695 | 0x00, |
| 1696 | 1696 | 0x00, |