srcclean and manual cleanup

This commit is contained in:
Vas Crabb 2025-01-26 05:59:56 +11:00
parent afc4a360ba
commit 587598e618
44 changed files with 605 additions and 627 deletions

View File

@ -7983,7 +7983,7 @@ ATK test: OK
<notes><![CDATA[ <notes><![CDATA[
ATK test: OK ATK test: OK
]]></notes> ]]></notes>
<!-- cover/floppy title --> <!-- cover/floppy title -->
<info name="alt_title" value="Brutal Football" /> <info name="alt_title" value="Brutal Football" />
<part name="flop1" interface="floppy_3_5"> <part name="flop1" interface="floppy_3_5">
<feature name="part_id" value="Disk 1" /> <feature name="part_id" value="Disk 1" />
@ -12097,7 +12097,7 @@ ATK test: OK
</part> </part>
</software> </software>
<!-- "F40 Pursuit Simulator" alt version known to exist (title screen) --> <!-- "F40 Pursuit Simulator" alt version known to exist (title screen) -->
<software name="crazycr2" supported="no"> <software name="crazycr2" supported="no">
<!-- SPS (CAPS) release 311 --> <!-- SPS (CAPS) release 311 -->
<description>Crazy Cars II (Europe)</description> <description>Crazy Cars II (Europe)</description>
@ -12156,7 +12156,7 @@ ATK test: C:79 H:U 1 Sector Bad
</part> </part>
</software> </software>
<!-- PD version known to exist https://www.aminet.net/package/game/jump/CrazySueII --> <!-- PD version known to exist https://www.aminet.net/package/game/jump/CrazySueII -->
<software name="crazsue2" supported="no"> <software name="crazsue2" supported="no">
<!-- SPS (CAPS) release 2195 --> <!-- SPS (CAPS) release 2195 -->
<description>Crazy Sue... Goes On (Europe)</description> <description>Crazy Sue... Goes On (Europe)</description>
@ -12168,7 +12168,7 @@ ATK test: C:79 H:U 1 Sector Bad
TODO: test me in full, is track 43 onward bad just a side effect of using RNC cruncher? TODO: test me in full, is track 43 onward bad just a side effect of using RNC cruncher?
ATK test: C:43 onward Bad ATK test: C:43 onward Bad
]]></notes> ]]></notes>
<info name="alt_title" value="Crazy Sue II" /> <info name="alt_title" value="Crazy Sue II" />
<info name="magazine" value="Amiga Mania" /> <info name="magazine" value="Amiga Mania" />
<info name="release" value="199209xx" /> <info name="release" value="199209xx" />
<!-- Omake: type "HIRONZMUSJUMPSHOE" on title screen to enable cheat mode --> <!-- Omake: type "HIRONZMUSJUMPSHOE" on title screen to enable cheat mode -->

View File

@ -731,7 +731,7 @@ license:CC0-1.0
<description>Brutal Sports Series: Football</description> <description>Brutal Sports Series: Football</description>
<year>1994</year> <year>1994</year>
<publisher>Millennium</publisher> <publisher>Millennium</publisher>
<!-- Cover/CD title --> <!-- Cover/CD title -->
<info name="alt_title" value="Brutal Football" /> <info name="alt_title" value="Brutal Football" />
<info name="disc_matrix" value="CDD3361 BRUTAL FOOTBALL : MASTERED BY NIMBUS" /> <info name="disc_matrix" value="CDD3361 BRUTAL FOOTBALL : MASTERED BY NIMBUS" />
<part name="cdrom" interface="cdrom"> <part name="cdrom" interface="cdrom">

View File

@ -299,8 +299,8 @@ No sound, hardlocks then eventually throws an exception after the Dyna Cam logo
Switching items in main menu causes a glitch on the text Switching items in main menu causes a glitch on the text
Rightmost column of gameplay has odd "overscan" area Rightmost column of gameplay has odd "overscan" area
]]></notes> ]]></notes>
<!-- cover title, NOTE: different than all the other version --> <!-- cover title, NOTE: different than all the other version -->
<info name="alt_title" value="Brutal Sports Football" /> <info name="alt_title" value="Brutal Sports Football" />
<info name="serial" value="JA100"/> <info name="serial" value="JA100"/>
<part name="cart" interface="jaguar_cart"> <part name="cart" interface="jaguar_cart">
<dataarea name="rom" size="2097152" width="32" endianness="big"> <dataarea name="rom" size="2097152" width="32" endianness="big">

View File

@ -90,7 +90,7 @@ license:CC0-1.0
<info name="developer" value="EktaSoft"/> <info name="developer" value="EktaSoft"/>
<info name="comment" value="Recostruction of an additional JUKU PC utilities disk #4 with EKDOS 2.30 based on file list in READ.ME published by EKTA in December 1989."/> <!-- See https://github.com/infoaed/juku3000/blob/master/docs/ekdos230.txt for READ.ME. --> <info name="comment" value="Recostruction of an additional JUKU PC utilities disk #4 with EKDOS 2.30 based on file list in READ.ME published by EKTA in December 1989."/> <!-- See https://github.com/infoaed/juku3000/blob/master/docs/ekdos230.txt for READ.ME. -->
<part name="flop1" interface="floppy_5_25"> <part name="flop1" interface="floppy_5_25">
<feature name="part_id" value="UTILS-4" /><!-- See https://juku3000.infoaed.ee/tarkvara-kataloog/#j3kutil4 for details. --> <feature name="part_id" value="UTILS-4" /><!-- See https://juku3000.infoaed.ee/tarkvara-kataloog/#j3kutil4 for details. -->
<dataarea name="flop" size="819200"> <dataarea name="flop" size="819200">
<rom name="J3KUTIL4.JUK" size="819200" crc="839f20aa" sha1="fb8a5239cdd74eced3b0bb7ab8ec6e8b2092f4c3" /> <rom name="J3KUTIL4.JUK" size="819200" crc="839f20aa" sha1="fb8a5239cdd74eced3b0bb7ab8ec6e8b2092f4c3" />
</dataarea> </dataarea>

View File

@ -16443,7 +16443,7 @@ Black screen, requires sub CPU to be overclocked by 1.5x
<description>Music from the Sega CD Games - Jurassic Park, Batman Returns (USA)</description> <description>Music from the Sega CD Games - Jurassic Park, Batman Returns (USA)</description>
<year>1993</year> <year>1993</year>
<publisher>Sega Multimedia Studio</publisher> <publisher>Sega Multimedia Studio</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/> <sharedfeat name="compatibility" value="NTSC-U"/>
<part name="cdrom" interface="scd_cdrom"> <part name="cdrom" interface="scd_cdrom">
<diskarea name="cdrom"> <diskarea name="cdrom">
<disk name="music from the sega cd games - jurassic park, batman returns (usa)" status="nodump"/> <disk name="music from the sega cd games - jurassic park, batman returns (usa)" status="nodump"/>
@ -16462,7 +16462,7 @@ Black screen, requires sub CPU to be overclocked by 1.5x
<description>The Smurfs (USA, Prototype)</description> <description>The Smurfs (USA, Prototype)</description>
<year>2014</year> <year>2014</year>
<publisher>Good Deal Games</publisher> <publisher>Good Deal Games</publisher>
<sharedfeat name="compatibility" value="NTSC-U"/> <sharedfeat name="compatibility" value="NTSC-U"/>
<part name="cdrom" interface="scd_cdrom"> <part name="cdrom" interface="scd_cdrom">
<diskarea name="cdrom"> <diskarea name="cdrom">
<disk name="the smurfs (usa, prototype)" status="nodump"/> <disk name="the smurfs (usa, prototype)" status="nodump"/>

View File

@ -54,7 +54,7 @@ license:CC0-1.0
<dataarea name="prg" size="0x400000"> <dataarea name="prg" size="0x400000">
<rom name="c-04.u1" size="0x400000" crc="89b6ef86" sha1="1af69047508fce08fa949a7d821255e306a329a3" /> <rom name="c-04.u1" size="0x400000" crc="89b6ef86" sha1="1af69047508fce08fa949a7d821255e306a329a3" />
<!-- bypass (invisible) EEPROM error until cart EEPROM is properly hooked up --> <!-- bypass (invisible) EEPROM error until cart EEPROM is properly hooked up -->
<rom value="0xea" offset="0xd5fa" size="2" loadflag="fill" /> <rom value="0xea" offset="0xd5fa" size="2" loadflag="fill" />
</dataarea> </dataarea>
</part> </part>
</software> </software>

View File

@ -4325,7 +4325,7 @@ RAND USR 16530
</dataarea> </dataarea>
</part> </part>
</software> </software>
<software name="invent1"> <software name="invent1">
<description>Inventions 1</description> <description>Inventions 1</description>
<year>1982</year> <year>1982</year>

View File

@ -1056,10 +1056,10 @@ end
-------------------------------------------------- --------------------------------------------------
if opt_tool(FORMATS, "H17D_DSK") then if opt_tool(FORMATS, "H17D_DSK") then
files { files {
MAME_DIR.. "src/lib/formats/h17disk.cpp", MAME_DIR.. "src/lib/formats/h17disk.cpp",
MAME_DIR.. "src/lib/formats/h17disk.h", MAME_DIR.. "src/lib/formats/h17disk.h",
} }
end end
-------------------------------------------------- --------------------------------------------------

View File

@ -824,18 +824,18 @@ uint8_t mcs51_cpu_device::r_psw() { return SFR_A(ADDR_PSW); }
In order to simplify memory mapping to the data address bus, the following address map is assumed for partitioned mode: In order to simplify memory mapping to the data address bus, the following address map is assumed for partitioned mode:
PES = 0: PES = 0:
0x00000-0x0ffff -> data memory on the expanded bus 0x00000-0x0ffff -> data memory on the expanded bus
0x10000-0x1ffff -> data memory on the byte-wide bus 0x10000-0x1ffff -> data memory on the byte-wide bus
PES = 1: PES = 1:
0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus 0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus
For non-partitioned mode the following memory map is assumed: For non-partitioned mode the following memory map is assumed:
PES = 0: PES = 0:
0x00000-0x0ffff -> data memory (the bus used to access it does not matter) 0x00000-0x0ffff -> data memory (the bus used to access it does not matter)
PES = 1: PES = 1:
0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus 0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus
*/ */
offs_t mcs51_cpu_device::external_ram_iaddr(offs_t offset, offs_t mem_mask) offs_t mcs51_cpu_device::external_ram_iaddr(offs_t offset, offs_t mem_mask)

View File

@ -73,12 +73,12 @@ void spg110_device::ffreq2_w(int state)
} }
// notes about IRQ differences from 2xx // notes about IRQ differences from 2xx
// //
// TMB1 / TMB2 are IRQ7 (same as SPG2xx) // TMB1 / TMB2 are IRQ7 (same as SPG2xx)
// Key Change is IRQ4 (was 7 on SPG2xx) // Key Change is IRQ4 (was 7 on SPG2xx)
// LVD (Low Voltage Reset) is IRQ6 (doesn't exist on SPG2xx?) // LVD (Low Voltage Reset) is IRQ6 (doesn't exist on SPG2xx?)
// ADC is IRQ1 (was 3 on SPG2xx) // ADC is IRQ1 (was 3 on SPG2xx)
// //
// on SPG2xx 0x3D2E can redirect any other interrupt to the FIQ // on SPG2xx 0x3D2E can redirect any other interrupt to the FIQ
// on SPG110 FIQ is always from SPUIRQ (sound) // on SPG110 FIQ is always from SPUIRQ (sound)
// //
@ -162,13 +162,13 @@ void spg110_device::internal_map(address_map &map)
// 0x2038 // P_Effect_color (not the same as 2030) // 0x2038 // P_Effect_color (not the same as 2030)
map(0x002039, 0x002039).w(m_spg_video, FUNC(spg110_video_device::effect_control_2039_w)); // P_Effect_control map(0x002039, 0x002039).w(m_spg_video, FUNC(spg110_video_device::effect_control_2039_w)); // P_Effect_control
// 0x203a // P_Mix_offset // 0x203a // P_Mix_offset
// 0x203b // P_Fan_effect_th // 0x203b // P_Fan_effect_th
map(0x00203c, 0x00203c).w(m_spg_video, FUNC(spg110_video_device::huereference_203c_w)); // P_203C_HueRefer (should be set based on PAL/NTSC) map(0x00203c, 0x00203c).w(m_spg_video, FUNC(spg110_video_device::huereference_203c_w)); // P_203C_HueRefer (should be set based on PAL/NTSC)
map(0x00203d, 0x00203d).w(m_spg_video, FUNC(spg110_video_device::lum_adjust_203d_w)); // P_Lum_Adjust map(0x00203d, 0x00203d).w(m_spg_video, FUNC(spg110_video_device::lum_adjust_203d_w)); // P_Lum_Adjust
// 0x203e // P_LPVPosition // 0x203e // P_LPVPosition
// 0x203f // P_LPHPosition // 0x203f // P_LPHPosition
map(0x002042, 0x002042).rw(m_spg_video, FUNC(spg110_video_device::sp_control_2042_r),FUNC(spg110_video_device::sp_control_2042_w)); // P_Sp_control map(0x002042, 0x002042).rw(m_spg_video, FUNC(spg110_video_device::sp_control_2042_r),FUNC(spg110_video_device::sp_control_2042_w)); // P_Sp_control
map(0x002045, 0x002045).w(m_spg_video, FUNC(spg110_video_device::spg110_2045_w)); // not documented? map(0x002045, 0x002045).w(m_spg_video, FUNC(spg110_video_device::spg110_2045_w)); // not documented?
@ -176,11 +176,11 @@ void spg110_device::internal_map(address_map &map)
map(0x002060, 0x002060).w(m_spg_video, FUNC(spg110_video_device::dma_dst_2060_w)); // P_DMA_Target_adr map(0x002060, 0x002060).w(m_spg_video, FUNC(spg110_video_device::dma_dst_2060_w)); // P_DMA_Target_adr
map(0x002061, 0x002061).w(m_spg_video, FUNC(spg110_video_device::dma_dst_seg_2061_w)); // P_DMA_Target_seg map(0x002061, 0x002061).w(m_spg_video, FUNC(spg110_video_device::dma_dst_seg_2061_w)); // P_DMA_Target_seg
map(0x002062, 0x002062).rw(m_spg_video, FUNC(spg110_video_device::dma_len_status_2062_r),FUNC(spg110_video_device::dma_len_trigger_2062_w)); // P_DMA_numbr map(0x002062, 0x002062).rw(m_spg_video, FUNC(spg110_video_device::dma_len_status_2062_r),FUNC(spg110_video_device::dma_len_trigger_2062_w)); // P_DMA_numbr
map(0x002063, 0x002063).rw(m_spg_video, FUNC(spg110_video_device::spg110_2063_r),FUNC(spg110_video_device::spg110_2063_w)); // P_DMA_control - Video IRQ source / ack (3 different things checked here instead of 2 on spg2xx?) map(0x002063, 0x002063).rw(m_spg_video, FUNC(spg110_video_device::spg110_2063_r),FUNC(spg110_video_device::spg110_2063_w)); // P_DMA_control - Video IRQ source / ack (3 different things checked here instead of 2 on spg2xx?)
map(0x002064, 0x002064).w(m_spg_video, FUNC(spg110_video_device::dma_dst_step_2064_w)); // P_DMA_Target_step map(0x002064, 0x002064).w(m_spg_video, FUNC(spg110_video_device::dma_dst_step_2064_w)); // P_DMA_Target_step
map(0x002065, 0x002065).rw(m_spg_video, FUNC(spg110_video_device::dma_manual_2065_r), FUNC(spg110_video_device::dma_manual_2065_w)); // P_DMA_data map(0x002065, 0x002065).rw(m_spg_video, FUNC(spg110_video_device::dma_manual_2065_r), FUNC(spg110_video_device::dma_manual_2065_w)); // P_DMA_data
map(0x002066, 0x002066).w(m_spg_video, FUNC(spg110_video_device::dma_source_2066_w)); // P_DMA_Source_adr map(0x002066, 0x002066).w(m_spg_video, FUNC(spg110_video_device::dma_source_2066_w)); // P_DMA_Source_adr
map(0x002067, 0x002067).w(m_spg_video, FUNC(spg110_video_device::dma_source_seg_2067_w)); // P_DMA_Source_seg map(0x002067, 0x002067).w(m_spg_video, FUNC(spg110_video_device::dma_source_seg_2067_w)); // P_DMA_Source_seg
map(0x002068, 0x002068).rw(m_spg_video, FUNC(spg110_video_device::dma_src_step_2068_r), FUNC(spg110_video_device::dma_src_step_2068_w)); // P_DMA_Source_step map(0x002068, 0x002068).rw(m_spg_video, FUNC(spg110_video_device::dma_src_step_2068_r), FUNC(spg110_video_device::dma_src_step_2068_w)); // P_DMA_Source_step

View File

@ -337,7 +337,7 @@ device_memory_interface::space_config_vector spg110_video_device::memory_space_c
} }
/* 0x2063 P_DMA_control /* 0x2063 P_DMA_control
despite the name this address is more IRQ control than DMA, although there are some DMA flags in here despite the name this address is more IRQ control than DMA, although there are some DMA flags in here
bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
@ -461,7 +461,7 @@ uint16_t spg110_video_device::irq_tm_h_2037_r()
// added to value from the PRNG for some random number generation cases // added to value from the PRNG for some random number generation cases
// should this return the *current* horizontal position? or the register value written? // should this return the *current* horizontal position? or the register value written?
return m_screen->hpos(); return m_screen->hpos();
} }
void spg110_video_device::irq_tm_h_2037_w(uint16_t data) void spg110_video_device::irq_tm_h_2037_w(uint16_t data)
{ {
@ -474,13 +474,13 @@ void spg110_video_device::effect_control_2039_w(uint16_t data)
{ {
// 0803 on every scene transition // 0803 on every scene transition
logerror("%s: effect_control_2039_w: %04x\n", machine().describe_context(), data); logerror("%s: effect_control_2039_w: %04x\n", machine().describe_context(), data);
} }
void spg110_video_device::huereference_203c_w(uint16_t data) void spg110_video_device::huereference_203c_w(uint16_t data)
{ {
// 0006 on startup, twice // 0006 on startup, twice
logerror("%s: huereference_203c_w: %04x\n", machine().describe_context(), data); logerror("%s: huereference_203c_w: %04x\n", machine().describe_context(), data);
} }
void spg110_video_device::lum_adjust_203d_w(uint16_t data) void spg110_video_device::lum_adjust_203d_w(uint16_t data)
{ {
@ -497,7 +497,7 @@ void spg110_video_device::sp_control_2042_w(uint16_t data)
{ {
// sets bit 0x0004, masks with 0xfffb etc. // sets bit 0x0004, masks with 0xfffb etc.
logerror("%s: sp_control_2042_w: %04x\n", machine().describe_context(), data); logerror("%s: sp_control_2042_w: %04x\n", machine().describe_context(), data);
} }
void spg110_video_device::spg110_2045_w(uint16_t data) void spg110_video_device::spg110_2045_w(uint16_t data)
{ {

View File

@ -256,7 +256,7 @@ void spg_renderer_device::draw_linemap(bool has_extended_tilemaps, const rectang
uint32_t palette_map = tilemapregs[3]; uint32_t palette_map = tilemapregs[3];
//if (scanline == 128) //if (scanline == 128)
// popmessage("draw draw_linemap reg0 %04x reg1 %04x bases %04x %04x\n", tilemapregs[0], tilemapregs[1], tilemap, palette_map); // popmessage("draw draw_linemap reg0 %04x reg1 %04x bases %04x %04x\n", tilemapregs[0], tilemapregs[1], tilemap, palette_map);
//uint32_t xscroll = scrollregs[0]; //uint32_t xscroll = scrollregs[0];
uint32_t yscroll = scrollregs[1]; uint32_t yscroll = scrollregs[1];
@ -309,11 +309,11 @@ void spg_renderer_device::draw_linemap(bool has_extended_tilemaps, const rectang
{ {
bits <<= nc_bpp; bits <<= nc_bpp;
if (nbits < nc_bpp) if (nbits < nc_bpp)
{ {
uint16_t b = spc.read_word(sourcebase++ & 0x3fffff); uint16_t b = spc.read_word(sourcebase++ & 0x3fffff);
b = (b << 8) | (b >> 8); b = (b << 8) | (b >> 8);
bits |= b << (nc_bpp - nbits); bits |= b << (nc_bpp - nbits);
nbits += 16; nbits += 16;
} }
nbits -= nc_bpp; nbits -= nc_bpp;

View File

@ -24,407 +24,388 @@
#include "emu.h" #include "emu.h"
#include "roland_sa.h" #include "roland_sa.h"
DEFINE_DEVICE_TYPE(ROLAND_SA, roland_sa_device, "roland_sa", "Roland SA CPU-B Sound Generator") namespace {
// LUT for the address speed // LUT for the address speed
const uint32_t roland_sa_device::env_table[] = { const uint32_t env_table[] = {
0x000000, 0x000023, 0x000026, 0x000029, 0x00002d, 0x000031, 0x000036, 0x000000, 0x000023, 0x000026, 0x000029, 0x00002d, 0x000031, 0x000036,
0x00003b, 0x000040, 0x000046, 0x00004c, 0x000052, 0x00005a, 0x000062, 0x00003b, 0x000040, 0x000046, 0x00004c, 0x000052, 0x00005a, 0x000062,
0x00006c, 0x000076, 0x000080, 0x00008c, 0x000098, 0x0000a4, 0x0000b4, 0x00006c, 0x000076, 0x000080, 0x00008c, 0x000098, 0x0000a4, 0x0000b4,
0x0000c4, 0x0000d8, 0x0000ec, 0x000104, 0x00011c, 0x000134, 0x00014c, 0x0000c4, 0x0000d8, 0x0000ec, 0x000104, 0x00011c, 0x000134, 0x00014c,
0x00016c, 0x00018c, 0x0001b4, 0x0001dc, 0x000200, 0x000230, 0x000260, 0x00016c, 0x00018c, 0x0001b4, 0x0001dc, 0x000200, 0x000230, 0x000260,
0x000290, 0x0002d0, 0x000310, 0x000360, 0x0003b0, 0x000400, 0x000460, 0x000290, 0x0002d0, 0x000310, 0x000360, 0x0003b0, 0x000400, 0x000460,
0x0004c0, 0x000520, 0x0005a0, 0x000620, 0x0006c0, 0x000760, 0x000800, 0x0004c0, 0x000520, 0x0005a0, 0x000620, 0x0006c0, 0x000760, 0x000800,
0x0008c0, 0x000980, 0x000a40, 0x000b40, 0x000c40, 0x000d80, 0x000ec0, 0x0008c0, 0x000980, 0x000a40, 0x000b40, 0x000c40, 0x000d80, 0x000ec0,
0x001000, 0x001180, 0x001300, 0x001480, 0x001680, 0x001880, 0x001b00, 0x001000, 0x001180, 0x001300, 0x001480, 0x001680, 0x001880, 0x001b00,
0x001d80, 0x002000, 0x002300, 0x002600, 0x002900, 0x002d00, 0x003100, 0x001d80, 0x002000, 0x002300, 0x002600, 0x002900, 0x002d00, 0x003100,
0x003600, 0x003b00, 0x004000, 0x004600, 0x004c00, 0x005200, 0x005a00, 0x003600, 0x003b00, 0x004000, 0x004600, 0x004c00, 0x005200, 0x005a00,
0x006200, 0x006c00, 0x007600, 0x008000, 0x008c00, 0x009800, 0x00a400, 0x006200, 0x006c00, 0x007600, 0x008000, 0x008c00, 0x009800, 0x00a400,
0x00b400, 0x00c400, 0x00d800, 0x00ec00, 0x010000, 0x011800, 0x013000, 0x00b400, 0x00c400, 0x00d800, 0x00ec00, 0x010000, 0x011800, 0x013000,
0x014800, 0x016800, 0x018800, 0x01b000, 0x01d800, 0x020000, 0x023000, 0x014800, 0x016800, 0x018800, 0x01b000, 0x01d800, 0x020000, 0x023000,
0x026000, 0x029000, 0x02d000, 0x031000, 0x036000, 0x03b000, 0x040000, 0x026000, 0x029000, 0x02d000, 0x031000, 0x036000, 0x03b000, 0x040000,
0x046000, 0x04c000, 0x052000, 0x05a000, 0x062000, 0x06c000, 0x076000, 0x046000, 0x04c000, 0x052000, 0x05a000, 0x062000, 0x06c000, 0x076000,
0x080000, 0x08c000, 0x098000, 0x0a4000, 0x0b4000, 0x0c4000, 0x0d8000, 0x080000, 0x08c000, 0x098000, 0x0a4000, 0x0b4000, 0x0c4000, 0x0d8000,
0x0ec000, 0x100000, 0x118000, 0x130000, 0x148000, 0x168000, 0x188000, 0x0ec000, 0x100000, 0x118000, 0x130000, 0x148000, 0x168000, 0x188000,
0x1b0000, 0x1d8000, 0x000000, 0x1fffdc, 0x1fffd9, 0x1fffd6, 0x1fffd2, 0x1b0000, 0x1d8000, 0x000000, 0x1fffdc, 0x1fffd9, 0x1fffd6, 0x1fffd2,
0x1fffce, 0x1fffc9, 0x1fffc4, 0x1fffbf, 0x1fffb9, 0x1fffb3, 0x1fffad, 0x1fffce, 0x1fffc9, 0x1fffc4, 0x1fffbf, 0x1fffb9, 0x1fffb3, 0x1fffad,
0x1fffa5, 0x1fff9d, 0x1fff93, 0x1fff89, 0x1fff7f, 0x1fff73, 0x1fff67, 0x1fffa5, 0x1fff9d, 0x1fff93, 0x1fff89, 0x1fff7f, 0x1fff73, 0x1fff67,
0x1fff5b, 0x1fff4b, 0x1fff3b, 0x1fff27, 0x1fff13, 0x1ffefb, 0x1ffee3, 0x1fff5b, 0x1fff4b, 0x1fff3b, 0x1fff27, 0x1fff13, 0x1ffefb, 0x1ffee3,
0x1ffecb, 0x1ffeb3, 0x1ffe93, 0x1ffe73, 0x1ffe4b, 0x1ffe23, 0x1ffdff, 0x1ffecb, 0x1ffeb3, 0x1ffe93, 0x1ffe73, 0x1ffe4b, 0x1ffe23, 0x1ffdff,
0x1ffdcf, 0x1ffd9f, 0x1ffd6f, 0x1ffd2f, 0x1ffcef, 0x1ffc9f, 0x1ffc4f, 0x1ffdcf, 0x1ffd9f, 0x1ffd6f, 0x1ffd2f, 0x1ffcef, 0x1ffc9f, 0x1ffc4f,
0x1ffbff, 0x1ffb9f, 0x1ffb3f, 0x1ffadf, 0x1ffa5f, 0x1ff9df, 0x1ff93f, 0x1ffbff, 0x1ffb9f, 0x1ffb3f, 0x1ffadf, 0x1ffa5f, 0x1ff9df, 0x1ff93f,
0x1ff89f, 0x1ff7ff, 0x1ff73f, 0x1ff67f, 0x1ff5bf, 0x1ff4bf, 0x1ff3bf, 0x1ff89f, 0x1ff7ff, 0x1ff73f, 0x1ff67f, 0x1ff5bf, 0x1ff4bf, 0x1ff3bf,
0x1ff27f, 0x1ff13f, 0x1fefff, 0x1fee7f, 0x1fecff, 0x1feb7f, 0x1fe97f, 0x1ff27f, 0x1ff13f, 0x1fefff, 0x1fee7f, 0x1fecff, 0x1feb7f, 0x1fe97f,
0x1fe77f, 0x1fe4ff, 0x1fe27f, 0x1fdfff, 0x1fdcff, 0x1fd9ff, 0x1fd6ff, 0x1fe77f, 0x1fe4ff, 0x1fe27f, 0x1fdfff, 0x1fdcff, 0x1fd9ff, 0x1fd6ff,
0x1fd2ff, 0x1fceff, 0x1fc9ff, 0x1fc4ff, 0x1fbfff, 0x1fb9ff, 0x1fb3ff, 0x1fd2ff, 0x1fceff, 0x1fc9ff, 0x1fc4ff, 0x1fbfff, 0x1fb9ff, 0x1fb3ff,
0x1fadff, 0x1fa5ff, 0x1f9dff, 0x1f93ff, 0x1f89ff, 0x1f7fff, 0x1f73ff, 0x1fadff, 0x1fa5ff, 0x1f9dff, 0x1f93ff, 0x1f89ff, 0x1f7fff, 0x1f73ff,
0x1f67ff, 0x1f5bff, 0x1f4bff, 0x1f3bff, 0x1f27ff, 0x1f13ff, 0x1effff, 0x1f67ff, 0x1f5bff, 0x1f4bff, 0x1f3bff, 0x1f27ff, 0x1f13ff, 0x1effff,
0x1ee7ff, 0x1ecfff, 0x1eb7ff, 0x1e97ff, 0x1e77ff, 0x1e4fff, 0x1e27ff, 0x1ee7ff, 0x1ecfff, 0x1eb7ff, 0x1e97ff, 0x1e77ff, 0x1e4fff, 0x1e27ff,
0x1dffff, 0x1dcfff, 0x1d9fff, 0x1d6fff, 0x1d2fff, 0x1cefff, 0x1c9fff, 0x1dffff, 0x1dcfff, 0x1d9fff, 0x1d6fff, 0x1d2fff, 0x1cefff, 0x1c9fff,
0x1c4fff, 0x1bffff, 0x1b9fff, 0x1b3fff, 0x1adfff, 0x1a5fff, 0x19dfff, 0x1c4fff, 0x1bffff, 0x1b9fff, 0x1b3fff, 0x1adfff, 0x1a5fff, 0x19dfff,
0x193fff, 0x189fff, 0x17ffff, 0x173fff, 0x167fff, 0x15bfff, 0x14bfff, 0x193fff, 0x189fff, 0x17ffff, 0x173fff, 0x167fff, 0x15bfff, 0x14bfff,
0x13bfff, 0x127fff, 0x113fff, 0x0fffff, 0x0e7fff, 0x0cffff, 0x0b7fff, 0x13bfff, 0x127fff, 0x113fff, 0x0fffff, 0x0e7fff, 0x0cffff, 0x0b7fff,
0x097fff, 0x077fff, 0x04ffff, 0x027fff}; 0x097fff, 0x077fff, 0x04ffff, 0x027fff};
// LUT for bits 5/6/7/8 of the subphase // LUT for bits 5/6/7/8 of the subphase
const uint16_t roland_sa_device::addr_table[] = {0x1e0, 0x080, 0x060, 0x04d, 0x040, 0x036, 0x02d, 0x026, const uint16_t addr_table[] = {0x1e0, 0x080, 0x060, 0x04d, 0x040, 0x036, 0x02d, 0x026,
0x020, 0x01b, 0x016, 0x011, 0x00d, 0x00a, 0x006, 0x003}; 0x020, 0x01b, 0x016, 0x011, 0x00d, 0x00a, 0x006, 0x003};
} // anonymous namespace
DEFINE_DEVICE_TYPE(ROLAND_SA, roland_sa_device, "roland_sa", "Roland SA CPU-B Sound Generator")
roland_sa_device::roland_sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) roland_sa_device::roland_sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
: device_t(mconfig, ROLAND_SA, tag, owner, clock) : device_t(mconfig, ROLAND_SA, tag, owner, clock)
, device_sound_interface(mconfig, *this) , device_sound_interface(mconfig, *this)
, m_int_callback(*this) , m_int_callback(*this)
, m_stream(nullptr) , m_stream(nullptr)
{ {
} }
void roland_sa_device::device_start() void roland_sa_device::device_start()
{ {
m_stream = stream_alloc(0, 2, 20000, STREAM_SYNCHRONOUS); m_stream = stream_alloc(0, 2, 20000, STREAM_SYNCHRONOUS);
} }
void roland_sa_device::device_reset() void roland_sa_device::device_reset()
{ {
m_int_callback(CLEAR_LINE); m_int_callback(CLEAR_LINE);
m_irq_id = 0; m_irq_id = 0;
m_irq_triggered = false; m_irq_triggered = false;
memset(m_parts, 0, sizeof(m_parts)); memset(m_parts, 0, sizeof(m_parts));
} }
void roland_sa_device::set_sr_mode(bool mode) void roland_sa_device::set_sr_mode(bool mode)
{ {
if (m_sr_mode != mode) if (m_sr_mode != mode)
m_stream->set_sample_rate(mode ? 20000 : 32000); m_stream->set_sample_rate(mode ? 20000 : 32000);
m_sr_mode = mode; m_sr_mode = mode;
} }
void roland_sa_device::load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7) void roland_sa_device::load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7)
{ {
// Exp table to for the subphase // Exp table to for the subphase
// TODO: This is bit accurate, but I want to believe there is a better way to compute this function // TODO: This is bit accurate, but I want to believe there is a better way to compute this function
for (size_t i = 0; i < 0x10000; i++) for (size_t i = 0; i < 0x10000; i++)
{ {
// ROM IC11 // ROM IC11
uint16_t r11_pos = i % 4096; uint16_t r11_pos = i % 4096;
uint16_t r11 = (uint16_t)round(exp2f(13.0 + r11_pos / 4096.0) - 4096 * 2); uint16_t r11 = (uint16_t)round(exp2f(13.0 + r11_pos / 4096.0) - 4096 * 2);
bool r11_12 = !((r11 >> 12) & 1); bool r11_12 = !((r11 >> 12) & 1);
bool r11_11 = !((r11 >> 11) & 1); bool r11_11 = !((r11 >> 11) & 1);
bool r11_10 = !((r11 >> 10) & 1); bool r11_10 = !((r11 >> 10) & 1);
bool r11_9 = !((r11 >> 9) & 1); bool r11_9 = !((r11 >> 9) & 1);
bool r11_8 = !((r11 >> 8) & 1); bool r11_8 = !((r11 >> 8) & 1);
bool r11_7 = !((r11 >> 7) & 1); bool r11_7 = !((r11 >> 7) & 1);
bool r11_6 = !((r11 >> 6) & 1); bool r11_6 = !((r11 >> 6) & 1);
bool r11_5 = !((r11 >> 5) & 1); bool r11_5 = !((r11 >> 5) & 1);
bool r11_4 = (r11 >> 4) & 1; bool r11_4 = (r11 >> 4) & 1;
bool r11_3 = (r11 >> 3) & 1; bool r11_3 = (r11 >> 3) & 1;
bool r11_2 = (r11 >> 2) & 1; bool r11_2 = (r11 >> 2) & 1;
bool r11_1 = (r11 >> 1) & 1; bool r11_1 = (r11 >> 1) & 1;
bool r11_0 = (r11 >> 0) & 1; bool r11_0 = (r11 >> 0) & 1;
uint8_t param_bus_0 = ((i / 0x1000) >> 0) & 1; uint8_t param_bus_0 = ((i / 0x1000) >> 0) & 1;
uint8_t param_bus_1 = ((i / 0x1000) >> 1) & 1; uint8_t param_bus_1 = ((i / 0x1000) >> 1) & 1;
uint8_t param_bus_2 = ((i / 0x1000) >> 2) & 1; uint8_t param_bus_2 = ((i / 0x1000) >> 2) & 1;
uint8_t param_bus_3 = ((i / 0x1000) >> 3) & 1; uint8_t param_bus_3 = ((i / 0x1000) >> 3) & 1;
// Copy pasted from silicon // Copy pasted from silicon
bool result_b0 = (!r11_6 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_2 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_0 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3); bool result_b0 = (!r11_6 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_2 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_0 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3);
bool result_b1 = (!r11_7 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_3 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_0 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3); bool result_b1 = (!r11_7 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_3 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_0 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3);
bool result_b2 = !(!((!r11_8 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !(r11_0 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b2 = !(!((!r11_8 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_1 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !(r11_0 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b3 = !(!((!r11_9 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_1 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b3 = !(!((!r11_9 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_2 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_1 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b4 = !(!((!r11_10 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_2 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (0 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b4 = !(!((!r11_10 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_2 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (0 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b5 = !(!((!r11_11 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_3 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b5 = !(!((!r11_11 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_3 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_0 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b6 = !(!((!r11_12 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_4 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b6 = !(!((!r11_12 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_5 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((r11_4 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_1 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b7 = !(!((1 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((!r11_5 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b7 = !(!((1 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((!r11_5 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_2 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b8 = !(!((0 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (1 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((!r11_6 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b8 = !(!((0 && !param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (1 && param_bus_0 && !param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3)) && !((!r11_6 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_5 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_3 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b9 = !(!((1 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3)) && !((!r11_5 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3))); bool result_b9 = !(!((1 && !param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_7 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3)) && !((!r11_5 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (r11_4 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)));
bool result_b10 = !(!((1 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)) && !(!r11_5 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b10 = !(!((1 && param_bus_0 && param_bus_1 && !param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_8 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)) && !(!r11_5 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b11 = (1 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3); bool result_b11 = (1 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_9 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_6 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3);
bool result_b12 = (0 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (1 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3); bool result_b12 = (0 && !param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (1 && param_bus_0 && !param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_10 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_9 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_7 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3);
bool result_b13 = (1 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3); bool result_b13 = (1 && !param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_12 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) || (!r11_11 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_10 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_9 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) || (!r11_8 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3);
bool result_b14 = !(1 && !(1 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) && !(!r11_12 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_10 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_9 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b14 = !(1 && !(1 && param_bus_0 && param_bus_1 && param_bus_2 && !param_bus_3) && !(!r11_12 && !param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_10 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_9 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b15 = !(!(!param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_10 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b15 = !(!(!param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_10 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b16 = !(!(param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b16 = !(!(param_bus_0 && !param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && !param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_11 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b17 = !(!(!param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3)); bool result_b17 = !(!(!param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3) && !(!r11_12 && param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3));
bool result_b18 = param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3; bool result_b18 = param_bus_0 && param_bus_1 && !param_bus_2 && param_bus_3;
uint32_t result =
result_b18 << 18 | result_b17 << 17 | result_b16 << 16 | result_b15 << 15 | result_b14 << 14 | result_b13 << 13 |
result_b12 << 12 | result_b11 << 11 | result_b10 << 10 | result_b9 << 9 | result_b8 << 8 | result_b7 << 7 |
result_b6 << 6 | result_b5 << 5 | result_b4 << 4 | result_b3 << 3 | result_b2 << 2 | result_b1 << 1 | result_b0 << 0;
phase_exp_table[i] = result;
}
// Exp table to decode samples uint32_t result =
// TODO: This is bit accurate, but I want to believe there is a better way to compute this function result_b18 << 18 | result_b17 << 17 | result_b16 << 16 | result_b15 << 15 | result_b14 << 14 | result_b13 << 13 |
for (size_t i = 0; i < 0x8000; i++) result_b12 << 12 | result_b11 << 11 | result_b10 << 10 | result_b9 << 9 | result_b8 << 8 | result_b7 << 7 |
{ result_b6 << 6 | result_b5 << 5 | result_b4 << 4 | result_b3 << 3 | result_b2 << 2 | result_b1 << 1 | result_b0 << 0;
// ROM IC10 phase_exp_table[i] = result;
uint16_t r10_pos = i % 1024; }
uint16_t r10 = (uint16_t)round(exp2f(11.0 + ~r10_pos / 1024.0) - 1024);
bool r10_9 = (r10 >> 0) & 1;
bool r10_8 = (r10 >> 1) & 1;
bool r10_0 = (r10 >> 2) & 1;
bool r10_1 = (r10 >> 3) & 1;
bool r10_2 = (r10 >> 4) & 1;
bool r10_3 = !((r10 >> 5) & 1);
bool r10_4 = !((r10 >> 6) & 1);
bool r10_5 = !((r10 >> 7) & 1);
bool r10_6 = !((r10 >> 8) & 1);
bool r10_7 = !((r10 >> 9) & 1);
bool wavein_sign = i >= 0x4000; // Exp table to decode samples
uint8_t add_r_0 = ((i / 0x400) >> 0) & 1; // TODO: This is bit accurate, but I want to believe there is a better way to compute this function
uint8_t add_r_1 = ((i / 0x400) >> 1) & 1; for (size_t i = 0; i < 0x8000; i++)
uint8_t add_r_2 = ((i / 0x400) >> 2) & 1; {
uint8_t add_r_3 = ((i / 0x400) >> 3) & 1; // ROM IC10
uint16_t r10_pos = i % 1024;
uint16_t r10 = (uint16_t)round(exp2f(11.0 + ~r10_pos / 1024.0) - 1024);
bool r10_9 = BIT(r10, 0);
bool r10_8 = BIT(r10, 1);
bool r10_0 = BIT(r10, 2);
bool r10_1 = BIT(r10, 3);
bool r10_2 = BIT(r10, 4);
bool r10_3 = BIT(~r10, 5);
bool r10_4 = BIT(~r10, 6);
bool r10_5 = BIT(~r10, 7);
bool r10_6 = BIT(~r10, 8);
bool r10_7 = BIT(~r10, 9);
// Copy pasted from silicon bool wavein_sign = i >= 0x4000;
bool result_b14 = !((!(!add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!add_r_3 && !add_r_2 && !add_r_1 && !add_r_0 && wavein_sign)); uint8_t add_r_0 = BIT(i / 0x400, 0);
bool result_b13 = !((((!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && wavein_sign) || (!((!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign)); uint8_t add_r_1 = BIT(i / 0x400, 1);
bool result_b12 = !((((!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && wavein_sign) || (!((!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign)); uint8_t add_r_2 = BIT(i / 0x400, 2);
bool result_b11 = !((((!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && wavein_sign) || (!((!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !wavein_sign)); uint8_t add_r_3 = BIT(i / 0x400, 3);
bool result_b10 = !((!((!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !(!add_r_3 && add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!(!((!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !(!add_r_3 && add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign));
bool result_b9 = !((((1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign));
bool result_b8 = !((((1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (1 && 0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (1 && 0)) && !wavein_sign));
bool result_b7 = !((((1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign));
bool result_b6 = !((!((1 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !(r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!(!((1 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !(r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign));
bool result_b5 = !((!((!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign) || (!(!((!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && !add_r_1 && add_r_0))) && wavein_sign));
bool result_b4 = !((!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && !add_r_0))) && wavein_sign));
bool result_b3 = !((!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && add_r_0))) && wavein_sign));
bool result_b2 = !((!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && !add_r_0))) && wavein_sign));
bool result_b1 = !((!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && add_r_0))) && wavein_sign));
bool result_b0 = !((!((r10_8 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (r10_2 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (r10_2 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && add_r_2 && add_r_1 && !add_r_0))) && wavein_sign));
uint16_t result =
result_b14 << 14 | result_b13 << 13 | result_b12 << 12 | result_b11 << 11 | result_b10 << 10 |
result_b9 << 9 | result_b8 << 8 | result_b7 << 7 | result_b6 << 6 | result_b5 << 5 |
result_b4 << 4 | result_b3 << 3 | result_b2 << 2 | result_b1 << 1 | result_b0 << 0;
samples_exp_table[i] = result;
}
// Wave rom values // Copy pasted from silicon
for (size_t i = 0; i < 0x20000; i++) bool result_b14 = !((!(!add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!add_r_3 && !add_r_2 && !add_r_1 && !add_r_0 && wavein_sign));
{ bool result_b13 = !((((!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && wavein_sign) || (!((!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign));
size_t descrambled_i = ( bool result_b12 = !((((!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && wavein_sign) || (!((!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign));
((i >> 0) & 1) << 0 | bool result_b11 = !((((!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && wavein_sign) || (!((!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !wavein_sign));
((~i >> 1) & 1) << 1 | bool result_b10 = !((!((!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !(!add_r_3 && add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!(!((!r10_7 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !(!add_r_3 && add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign));
((i >> 2) & 1) << 2 | bool result_b9 = !((((1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign));
((~i >> 3) & 1) << 3 | bool result_b8 = !((((1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (1 && 0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (1 && 0)) && !wavein_sign));
((i >> 4) & 1) << 4 | bool result_b7 = !((((1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign) || (!((1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign));
((~i >> 5) & 1) << 5 | bool result_b6 = !((!((1 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !(r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) && !wavein_sign) || (!(!((1 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !(r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && wavein_sign));
((i >> 6) & 1) << 6 | bool result_b5 = !((!((!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign) || (!(!((!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_6 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && !add_r_1 && add_r_0))) && wavein_sign));
((i >> 7) & 1) << 7 | bool result_b4 = !((!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && !add_r_3 && add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && !add_r_0))) && wavein_sign));
((~i >> 8) & 1) << 8 | bool result_b3 = !((!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_4 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (add_r_3 && !add_r_2 && add_r_1 && add_r_0))) && wavein_sign));
((~i >> 9) & 1) << 9 | bool result_b2 = !((!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (!r10_3 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && !add_r_0))) && wavein_sign));
((i >> 10) & 1) << 10 | bool result_b1 = !((!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_0 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_2 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0)) && !((!r10_6 && add_r_3 && !add_r_2 && add_r_1 && add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (add_r_3 && add_r_2 && !add_r_1 && add_r_0))) && wavein_sign));
((i >> 11) & 1) << 11 | bool result_b0 = !((!((r10_8 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (r10_2 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && add_r_2 && add_r_1 && !add_r_0)) && !wavein_sign) || (!(!((r10_8 && !add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (r10_9 && !add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (r10_0 && !add_r_3 && add_r_2 && add_r_1 && !add_r_0) || (r10_1 && !add_r_3 && add_r_2 && add_r_1 && add_r_0) || (r10_2 && add_r_3 && !add_r_2 && !add_r_1 && !add_r_0) || (!r10_3 && add_r_3 && !add_r_2 && !add_r_1 && add_r_0) || (!r10_4 && add_r_3 && !add_r_2 && add_r_1 && !add_r_0) || (!r10_5 && add_r_3 && !add_r_2 && add_r_1 && add_r_0)) && !((!r10_6 && add_r_3 && add_r_2 && !add_r_1 && !add_r_0) || (!r10_7 && add_r_3 && add_r_2 && !add_r_1 && add_r_0) || (add_r_3 && add_r_2 && add_r_1 && !add_r_0))) && wavein_sign));
((i >> 12) & 1) << 12 |
((i >> 13) & 1) << 13 |
((i >> 14) & 1) << 14 |
((i >> 15) & 1) << 15 |
((i >> 16) & 1) << 16
);
uint16_t exp_sample = ( uint16_t result =
((ic5[descrambled_i] >> 0) & 1) << 13 | result_b14 << 14 | result_b13 << 13 | result_b12 << 12 | result_b11 << 11 | result_b10 << 10 |
((ic6[descrambled_i] >> 4) & 1) << 12 | result_b9 << 9 | result_b8 << 8 | result_b7 << 7 | result_b6 << 6 | result_b5 << 5 |
((ic7[descrambled_i] >> 4) & 1) << 11 | result_b4 << 4 | result_b3 << 3 | result_b2 << 2 | result_b1 << 1 | result_b0 << 0;
((~ic6[descrambled_i] >> 0) & 1) << 10 | samples_exp_table[i] = result;
((ic7[descrambled_i] >> 7) & 1) << 9 | }
((ic5[descrambled_i] >> 7) & 1) << 8 |
((~ic5[descrambled_i] >> 5) & 1) << 7 |
((ic6[descrambled_i] >> 2) & 1) << 6 |
((ic7[descrambled_i] >> 2) & 1) << 5 |
((ic7[descrambled_i] >> 1) & 1) << 4 |
((~ic5[descrambled_i] >> 1) & 1) << 3 |
((ic5[descrambled_i] >> 3) & 1) << 2 |
((ic6[descrambled_i] >> 5) & 1) << 1 |
((~ic6[descrambled_i] >> 7) & 1) << 0
);
bool exp_sign = (~ic7[descrambled_i] >> 3) & 1;
samples_exp[i] = exp_sample;
samples_exp_sign[i] = exp_sign;
uint16_t delta_sample = ( // Wave rom values
((~ic7[descrambled_i] >> 6) & 1) << 8 | for (size_t i = 0; i < 0x20000; i++)
((ic5[descrambled_i] >> 4) & 1) << 7 | {
((ic7[descrambled_i] >> 0) & 1) << 6 | const size_t descrambled_i = i ^ 0b0'00000011'00101010;
((~ic6[descrambled_i] >> 3) & 1) << 5 |
((ic5[descrambled_i] >> 2) & 1) << 4 | const uint16_t exp_sample =
((~ic5[descrambled_i] >> 6) & 1) << 3 | BIT( ic5[descrambled_i], 0) << 13 |
((ic6[descrambled_i] >> 6) & 1) << 2 | BIT( ic6[descrambled_i], 4) << 12 |
((ic7[descrambled_i] >> 5) & 1) << 1 | BIT( ic7[descrambled_i], 4) << 11 |
((~ic6[descrambled_i] >> 7) & 1) << 0 BIT(~ic6[descrambled_i], 0) << 10 |
); BIT( ic7[descrambled_i], 7) << 9 |
bool delta_sign = (ic6[descrambled_i] >> 1) & 1; BIT( ic5[descrambled_i], 7) << 8 |
samples_delta[i] = delta_sample; BIT(~ic5[descrambled_i], 5) << 7 |
samples_delta_sign[i] = delta_sign; BIT( ic6[descrambled_i], 2) << 6 |
} BIT( ic7[descrambled_i], 2) << 5 |
BIT( ic7[descrambled_i], 1) << 4 |
BIT(~ic5[descrambled_i], 1) << 3 |
BIT( ic5[descrambled_i], 3) << 2 |
BIT( ic6[descrambled_i], 5) << 1 |
BIT(~ic6[descrambled_i], 7) << 0;
const bool exp_sign = BIT(~ic7[descrambled_i], 3);
samples_exp[i] = exp_sample;
samples_exp_sign[i] = exp_sign;
const uint16_t delta_sample =
BIT(~ic7[descrambled_i], 6) << 8 |
BIT( ic5[descrambled_i], 4) << 7 |
BIT( ic7[descrambled_i], 0) << 6 |
BIT(~ic6[descrambled_i], 3) << 5 |
BIT( ic5[descrambled_i], 2) << 4 |
BIT(~ic5[descrambled_i], 6) << 3 |
BIT( ic6[descrambled_i], 6) << 2 |
BIT( ic7[descrambled_i], 5) << 1 |
BIT(~ic6[descrambled_i], 7) << 0;
const bool delta_sign = BIT(ic6[descrambled_i], 1);
samples_delta[i] = delta_sample;
samples_delta_sign[i] = delta_sign;
}
} }
u8 roland_sa_device::read(offs_t offset) u8 roland_sa_device::read(offs_t offset)
{ {
if (!machine().side_effects_disabled()) if (!machine().side_effects_disabled())
return m_irq_id; return m_irq_id;
return m_ctrl_mem[offset]; return m_ctrl_mem[offset];
} }
void roland_sa_device::write(offs_t offset, u8 data) void roland_sa_device::write(offs_t offset, u8 data)
{ {
m_int_callback(CLEAR_LINE); m_int_callback(CLEAR_LINE);
m_irq_triggered = false; m_irq_triggered = false;
m_ctrl_mem[offset] = data; m_ctrl_mem[offset] = data;
} }
void roland_sa_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) void roland_sa_device::sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs)
{ {
outputs[0].fill(0); outputs[0].fill(0);
int32_t *int_buffer = new int32_t[outputs[0].samples()]; std::unique_ptr<int32_t []> int_buffer = make_unique_clear<int32_t []>(outputs[0].samples());
for (size_t i = 0; i < outputs[0].samples(); i++)
int_buffer[i] = 0;
for (size_t voiceI = 0; voiceI < NUM_VOICES; voiceI++) for (size_t voiceI = 0; voiceI < NUM_VOICES; voiceI++)
{ {
for (size_t partI = 0; partI < PARTS_PER_VOICE; partI++) for (size_t partI = 0; partI < PARTS_PER_VOICE; partI++)
{ {
SA_Part &part = m_parts[voiceI][partI]; SA_Part &part = m_parts[voiceI][partI];
size_t mem_offset = voiceI * 0x100 + partI * 0x10; size_t mem_offset = voiceI * 0x100 + partI * 0x10;
uint32_t pitch_lut_i = m_ctrl_mem[mem_offset + 1] | (m_ctrl_mem[mem_offset + 0] << 8); uint32_t pitch_lut_i = m_ctrl_mem[mem_offset + 1] | (m_ctrl_mem[mem_offset + 0] << 8);
uint32_t wave_addr_loop = m_ctrl_mem[mem_offset + 2]; uint32_t wave_addr_loop = m_ctrl_mem[mem_offset + 2];
uint32_t wave_addr_high = m_ctrl_mem[mem_offset + 3]; uint32_t wave_addr_high = m_ctrl_mem[mem_offset + 3];
uint32_t env_dest = m_ctrl_mem[mem_offset + 4]; uint32_t env_dest = m_ctrl_mem[mem_offset + 4];
uint32_t env_speed = m_ctrl_mem[mem_offset + 5]; uint32_t env_speed = m_ctrl_mem[mem_offset + 5];
uint32_t flags = m_ctrl_mem[mem_offset + 6]; uint32_t flags = m_ctrl_mem[mem_offset + 6];
uint32_t env_offset = m_ctrl_mem[mem_offset + 7]; uint32_t env_offset = m_ctrl_mem[mem_offset + 7];
bool irq = false; bool irq = false;
for (size_t i = 0; i < outputs[0].samples(); i++) for (size_t i = 0; i < outputs[0].samples(); i++)
{ {
uint32_t volume; uint32_t volume;
uint32_t waverom_addr; uint32_t waverom_addr;
bool ag3_sel_sample_type; bool ag3_sel_sample_type;
bool ag1_phase_hi; bool ag1_phase_hi;
// IC19 // IC19
{ {
bool env_speed_some_high = bool env_speed_some_high =
BIT(env_speed, 6) || BIT(env_speed, 5) || BIT(env_speed, 4) || BIT(env_speed, 3) || BIT(env_speed, 6) || BIT(env_speed, 5) || BIT(env_speed, 4) || BIT(env_speed, 3) ||
BIT(env_speed, 2) || BIT(env_speed, 1) || BIT(env_speed, 0); BIT(env_speed, 2) || BIT(env_speed, 1) || BIT(env_speed, 0);
uint32_t adder1_a = part.env_value; uint32_t adder1_a = part.env_value;
if (BIT(flags, 0)) if (BIT(flags, 0))
adder1_a = 1 << 25; adder1_a = 1 << 25;
uint32_t adder1_b = env_table[env_speed]; uint32_t adder1_b = env_table[env_speed];
bool adder1_ci = env_speed_some_high && BIT(env_speed, 7); bool adder1_ci = env_speed_some_high && BIT(env_speed, 7);
if (adder1_ci) if (adder1_ci)
adder1_b |= 0x7f << 21; adder1_b |= 0x7f << 21;
uint32_t adder3_o = 1 + (adder1_a >> 20) + env_offset; uint32_t adder3_o = 1 + (adder1_a >> 20) + env_offset;
uint32_t adder3_of = adder3_o > 0xff; uint32_t adder3_of = adder3_o > 0xff;
adder3_o &= 0xff; adder3_o &= 0xff;
volume = ~( volume = ~(
((adder1_a >> 14) & 0b111111) | ((adder1_a >> 14) & 0b111111) |
((adder3_o & 0b1111) << 6) | ((adder3_o & 0b1111) << 6) |
(adder3_of ? ((adder3_o & 0b11110000) << 6) : 0) (adder3_of ? ((adder3_o & 0b11110000) << 6) : 0)
) & 0x3fff; ) & 0x3fff;
uint32_t adder1_o = adder1_a + adder1_b + (adder1_ci ? 1 : 0); uint32_t adder1_o = adder1_a + adder1_b + (adder1_ci ? 1 : 0);
uint32_t adder1_of = adder1_o > 0xfffffff; uint32_t adder1_of = adder1_o > 0xfffffff;
adder1_o &= 0xfffffff; adder1_o &= 0xfffffff;
uint32_t adder2_o = (adder1_o >> 20) + (~env_dest & 0xff) + 1; uint32_t adder2_o = (adder1_o >> 20) + (~env_dest & 0xff) + 1;
uint32_t adder2_of = adder2_o > 0xff; uint32_t adder2_of = adder2_o > 0xff;
bool end_reached = env_speed_some_high && ((adder1_of != (BIT(env_speed, 7))) || ((BIT(env_speed, 7)) != adder2_of)); bool end_reached = env_speed_some_high && ((adder1_of != (BIT(env_speed, 7))) || ((BIT(env_speed, 7)) != adder2_of));
irq |= end_reached; irq |= end_reached;
part.env_value = end_reached ? (env_dest << 20) : adder1_o; part.env_value = end_reached ? (env_dest << 20) : adder1_o;
} }
// IC9 // IC9
{ {
uint32_t adder1 = (phase_exp_table[pitch_lut_i] + part.sub_phase) & 0xffffff; uint32_t adder1 = (phase_exp_table[pitch_lut_i] + part.sub_phase) & 0xffffff;
uint32_t adder2 = 1 + (adder1 >> 16) + ((~wave_addr_loop) & 0xff); uint32_t adder2 = 1 + (adder1 >> 16) + ((~wave_addr_loop) & 0xff);
bool adder2_co = adder2 > 0xff; bool adder2_co = adder2 > 0xff;
adder2 &= 0xff; adder2 &= 0xff;
uint32_t adder1_and = BIT(flags, 1) ? 0 : (adder1 & 0xffff); uint32_t adder1_and = BIT(flags, 1) ? 0 : (adder1 & 0xffff);
adder1_and |= (BIT(flags, 1) ? 0 : (adder2_co ? adder2 : (adder1 >> 16))) << 16; adder1_and |= (BIT(flags, 1) ? 0 : (adder2_co ? adder2 : (adder1 >> 16))) << 16;
part.sub_phase = adder1_and; part.sub_phase = adder1_and;
waverom_addr = (wave_addr_high << 11) | ((part.sub_phase >> 9) & 0x7ff); waverom_addr = (wave_addr_high << 11) | ((part.sub_phase >> 9) & 0x7ff);
ag3_sel_sample_type = BIT(waverom_addr, 16) || BIT(waverom_addr, 15) || BIT(waverom_addr, 14) || ag3_sel_sample_type = BIT(waverom_addr, 16) || BIT(waverom_addr, 15) || BIT(waverom_addr, 14) ||
!((BIT(waverom_addr, 13) && !BIT(waverom_addr, 11) && !BIT(waverom_addr, 12)) || !BIT(waverom_addr, 13)); !((BIT(waverom_addr, 13) && !BIT(waverom_addr, 11) && !BIT(waverom_addr, 12)) || !BIT(waverom_addr, 13));
ag1_phase_hi = ( ag1_phase_hi = (
(BIT(pitch_lut_i, 15) && BIT(pitch_lut_i, 14)) || (BIT(pitch_lut_i, 15) && BIT(pitch_lut_i, 14)) ||
(BIT(part.sub_phase, 23) || BIT(part.sub_phase, 22) || BIT(part.sub_phase, 21) || BIT(part.sub_phase, 20)) || (BIT(part.sub_phase, 23) || BIT(part.sub_phase, 22) || BIT(part.sub_phase, 21) || BIT(part.sub_phase, 20)) ||
BIT(flags, 1) BIT(flags, 1)
); );
} }
// IC8 // IC8
{ {
uint32_t waverom_pa = samples_exp[waverom_addr]; uint32_t waverom_pa = samples_exp[waverom_addr];
uint32_t waverom_pb = samples_delta[waverom_addr]; uint32_t waverom_pb = samples_delta[waverom_addr];
bool sign_pa = samples_exp_sign[waverom_addr]; bool sign_pa = samples_exp_sign[waverom_addr];
bool sign_pb = samples_delta_sign[waverom_addr]; bool sign_pb = samples_delta_sign[waverom_addr];
waverom_pa |= ag3_sel_sample_type ? 1 : 0; waverom_pa |= ag3_sel_sample_type ? 1 : 0;
waverom_pb |= ag3_sel_sample_type ? 0 : 1; waverom_pb |= ag3_sel_sample_type ? 0 : 1;
if (ag1_phase_hi) if (ag1_phase_hi)
volume |= 0b1111 << 10; volume |= 0b1111 << 10;
uint32_t tmp_1, tmp_2; uint32_t tmp_1, tmp_2;
uint32_t adder1_o = volume + waverom_pa; uint32_t adder1_o = volume + waverom_pa;
bool adder1_co = adder1_o > 0x3fff; bool adder1_co = adder1_o > 0x3fff;
adder1_o &= 0x3fff; adder1_o &= 0x3fff;
if (adder1_co) if (adder1_co)
adder1_o |= 0x3c00; adder1_o |= 0x3c00;
tmp_1 = adder1_o; tmp_1 = adder1_o;
uint32_t adder3_o = addr_table[(part.sub_phase >> 5) & 0xf] + (waverom_pb & 0x1ff); uint32_t adder3_o = addr_table[(part.sub_phase >> 5) & 0xf] + (waverom_pb & 0x1ff);
bool adder3_of = adder3_o > 0x1ff; bool adder3_of = adder3_o > 0x1ff;
adder3_o &= 0x1ff; adder3_o &= 0x1ff;
if (adder3_of) if (adder3_of)
adder3_o |= 0x1e0; adder3_o |= 0x1e0;
adder1_o = volume + (adder3_o << 5);
adder1_co = adder1_o > 0x3fff;
adder1_o &= 0x3fff;
if (adder1_co)
adder1_o |= 0x3c00;
tmp_2 = adder1_o;
int32_t exp_val1 = samples_exp_table[(16384 * sign_pa) + (1024 * (tmp_1 >> 10)) + (tmp_1 & 1023)];
int32_t exp_val2 = samples_exp_table[(16384 * sign_pb) + (1024 * (tmp_2 >> 10)) + (tmp_2 & 1023)];
if (sign_pa)
exp_val1 = exp_val1 - 0x8000;
if (sign_pb)
exp_val2 = exp_val2 - 0x8000;
int32_t exp_val = exp_val1 + exp_val2;
int_buffer[i] += exp_val;
}
}
if (irq && !m_irq_triggered) adder1_o = volume + (adder3_o << 5);
{ adder1_co = adder1_o > 0x3fff;
m_irq_id = partI | (voiceI << 4); adder1_o &= 0x3fff;
m_int_callback(ASSERT_LINE); if (adder1_co)
m_irq_triggered = true; adder1_o |= 0x3c00;
} tmp_2 = adder1_o;
}
}
for (size_t i = 0; i < outputs[0].samples(); i++) int32_t exp_val1 = samples_exp_table[(16384 * sign_pa) + (1024 * (tmp_1 >> 10)) + (tmp_1 & 1023)];
outputs[0].put_int(i, int_buffer[i], 0xffff); int32_t exp_val2 = samples_exp_table[(16384 * sign_pb) + (1024 * (tmp_2 >> 10)) + (tmp_2 & 1023)];
if (sign_pa)
exp_val1 = exp_val1 - 0x8000;
if (sign_pb)
exp_val2 = exp_val2 - 0x8000;
int32_t exp_val = exp_val1 + exp_val2;
delete[] int_buffer; int_buffer[i] += exp_val;
}
}
if (irq && !m_irq_triggered)
{
m_irq_id = partI | (voiceI << 4);
m_int_callback(ASSERT_LINE);
m_irq_triggered = true;
}
}
}
for (size_t i = 0; i < outputs[0].samples(); i++)
outputs[0].put_int(i, int_buffer[i], 0xffff);
} }

View File

@ -8,53 +8,50 @@
class roland_sa_device : public device_t, public device_sound_interface class roland_sa_device : public device_t, public device_sound_interface
{ {
public: public:
roland_sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); roland_sa_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
auto int_callback() { return m_int_callback.bind(); } auto int_callback() { return m_int_callback.bind(); }
u8 read(offs_t offset); u8 read(offs_t offset);
void write(offs_t offset, u8 data); void write(offs_t offset, u8 data);
void load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7); void load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7);
void set_sr_mode(bool mode); void set_sr_mode(bool mode);
protected: protected:
// device_t implementation // device_t implementation
virtual void device_start() override; virtual void device_start() override ATTR_COLD;
virtual void device_reset() override; virtual void device_reset() override ATTR_COLD;
// device_sound_interface implementation // device_sound_interface implementation
virtual void sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) override; virtual void sound_stream_update(sound_stream &stream, std::vector<read_stream_view> const &inputs, std::vector<write_stream_view> &outputs) override;
private: private:
static constexpr unsigned NUM_VOICES = 16; static constexpr unsigned NUM_VOICES = 16;
static constexpr unsigned PARTS_PER_VOICE = 10; static constexpr unsigned PARTS_PER_VOICE = 10;
static const uint32_t env_table[]; uint16_t samples_exp[0x20000];
static const uint16_t addr_table[]; bool samples_exp_sign[0x20000];
uint16_t samples_delta[0x20000];
bool samples_delta_sign[0x20000];
uint16_t samples_exp[0x20000]; uint32_t phase_exp_table[0x10000];
bool samples_exp_sign[0x20000]; uint16_t samples_exp_table[0x8000];
uint16_t samples_delta[0x20000];
bool samples_delta_sign[0x20000];
uint32_t phase_exp_table[0x10000]; struct SA_Part
uint16_t samples_exp_table[0x8000]; {
uint32_t sub_phase;
uint32_t env_value;
};
struct SA_Part devcb_write_line m_int_callback;
{
uint32_t sub_phase;
uint32_t env_value;
};
devcb_write_line m_int_callback; sound_stream *m_stream; // stream handle
SA_Part m_parts[NUM_VOICES][PARTS_PER_VOICE]; // channel memory
sound_stream *m_stream; // stream handle uint8_t m_ctrl_mem[0x2000]; // RAM IC12 (as the CPU writes it)
SA_Part m_parts[NUM_VOICES][PARTS_PER_VOICE]; // channel memory uint8_t m_irq_id; // voice/part that triggered the IRQ
uint8_t m_ctrl_mem[0x2000]; // RAM IC12 (as the CPU writes it) bool m_irq_triggered; // if there is an IRQ currently waiting
uint8_t m_irq_id; // voice/part that triggered the IRQ bool m_sr_mode; // sample rate mode (true = 20 KHz, false = 32 KHz)
bool m_irq_triggered; // if there is an IRQ currently waiting
bool m_sr_mode; // sample rate mode (true = 20 KHz, false = 32 KHz)
}; };
DECLARE_DEVICE_TYPE(ROLAND_SA, roland_sa_device) DECLARE_DEVICE_TYPE(ROLAND_SA, roland_sa_device)

View File

@ -2,15 +2,15 @@
// copyright-holders:Devin Acker // copyright-holders:Devin Acker
/*************************************************************************** /***************************************************************************
NEC/Casio uPD931 synthesis chip NEC/Casio uPD931 synthesis chip
Many details of this implementation are based on research and notes by Robin Whittle: Many details of this implementation are based on research and notes by Robin Whittle:
https://www.firstpr.com.au/rwi/casio/Casio-931-2006-06-17.txt https://www.firstpr.com.au/rwi/casio/Casio-931-2006-06-17.txt
Any references to MT-65 behavior are based on this document. Any references to MT-65 behavior are based on this document.
TODO: TODO:
- implement vibrato register (CT-8000 doesn't use it) - implement vibrato register (CT-8000 doesn't use it)
- a few other unknown/unclear bits in the flags shift register - a few other unknown/unclear bits in the flags shift register
***************************************************************************/ ***************************************************************************/
#include "emu.h" #include "emu.h"

View File

@ -167,7 +167,7 @@ bool heath_h17d_format::load(util::random_read &io, uint32_t form_factor, const
std::vector<uint32_t> buf; std::vector<uint32_t> buf;
auto const [secm_pos, secm_length] = find_block(io, SecM); auto const [secm_pos, secm_length] = find_block(io, SecM);
uint8_t sector_meta_data[SECTOR_METADATA_SIZE]; uint8_t sector_meta_data[SECTOR_METADATA_SIZE];
uint8_t sector_data[SECTOR_DATA_SIZE]; uint8_t sector_data[SECTOR_DATA_SIZE];

View File

@ -1241,11 +1241,11 @@ void amiga_state::aga_map(address_map &map)
void amiga_state::custom_chip_reset() void amiga_state::custom_chip_reset()
{ {
// TODO: not entirely correct // TODO: not entirely correct
// - OCS Denise returns open bus // - OCS Denise returns open bus
// - ECS Denise should return 0xff << 8 | ID // - ECS Denise should return 0xff << 8 | ID
// - AGA Lisa bits 15-10 are jumper selectable (at least on A4000), returns 0xfc << 8 | ID // - AGA Lisa bits 15-10 are jumper selectable (at least on A4000), returns 0xfc << 8 | ID
// cfr. https://eab.abime.net/showpost.php?p=627136&postcount=59 // cfr. https://eab.abime.net/showpost.php?p=627136&postcount=59
CUSTOM_REG(REG_DENISEID) = m_denise_id; CUSTOM_REG(REG_DENISEID) = m_denise_id;
CUSTOM_REG(REG_VPOSR) = m_agnus_id << 8; CUSTOM_REG(REG_VPOSR) = m_agnus_id << 8;
CUSTOM_REG(REG_DDFSTRT) = 0x18; CUSTOM_REG(REG_DDFSTRT) = 0x18;
@ -1571,7 +1571,7 @@ void amiga_state::custom_chip_w(offs_t offset, uint16_t data)
case REG_DDFSTOP: case REG_DDFSTOP:
/* impose hardware limits ( HRM, page 75 ) */ /* impose hardware limits ( HRM, page 75 ) */
// amigaaga_flop:aladdin writes 0x0100 here, expecting the HW limit to hit instead // amigaaga_flop:aladdin writes 0x0100 here, expecting the HW limit to hit instead
data &= (IS_AGA() || IS_ECS()) ? 0xfffe : 0xfffc; data &= (IS_AGA() || IS_ECS()) ? 0xfffe : 0xfffc;
if (data > 0xd8) if (data > 0xd8)
{ {

View File

@ -2825,7 +2825,7 @@ ROM_START( inquiztr )
ROM_LOAD( "inqdisk.img", 0x000000, 0x1c2000, NO_DUMP ) ROM_LOAD( "inqdisk.img", 0x000000, 0x1c2000, NO_DUMP )
ROM_END ROM_END
// Alternate Version 1.2 // Alternate Version 1.2
ROM_START( inquiztr12a ) ROM_START( inquiztr12a )
ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_REGION( 0x10000, "audiocpu", 0 )
ROM_LOAD( "inq6809", 0x08000, 0x08000, CRC(ae996600) SHA1(f360399e77b81399d910770fa8106c196f04363c) ) ROM_LOAD( "inq6809", 0x08000, 0x08000, CRC(ae996600) SHA1(f360399e77b81399d910770fa8106c196f04363c) )

View File

@ -3,34 +3,34 @@
// thanks-to:BCM // thanks-to:BCM
/*************************************************************************** /***************************************************************************
Casiotone 8000 / "Symphonytron" system Casiotone 8000 / "Symphonytron" system
The Symphonytron was a modular electronic organ produced by Casio in 1983. The Symphonytron was a modular electronic organ produced by Casio in 1983.
The full system consists of: The full system consists of:
- up to two Casiotone 8000 keyboards (8049 CPU, 2x uPD931 "vowel-consonant synthesis") - up to two Casiotone 8000 keyboards (8049 CPU, 2x uPD931 "vowel-consonant synthesis")
- RC-1 accompaniment unit (uPD7801 CPU, uPD930 rhythm generator, analog percussion) - RC-1 accompaniment unit (uPD7801 CPU, uPD930 rhythm generator, analog percussion)
- MB-1 memory unit (8049 CPU, 2x uPD931, RAM cartridge slot) - MB-1 memory unit (8049 CPU, 2x uPD931, RAM cartridge slot)
- FK-1 pedal keyboard (8049 CPU, single uPD931) - FK-1 pedal keyboard (8049 CPU, single uPD931)
- CS-100 or CS-200 keyboard stand with built-in mixer - CS-100 or CS-200 keyboard stand with built-in mixer
The keyboards and memory unit all connect to the RC-1 via 14-pin DIN connectors. The keyboards and memory unit all connect to the RC-1 via 14-pin DIN connectors.
Although the RAM cart slot is located on the MB-1, all actual access to the cart is controlled Although the RAM cart slot is located on the MB-1, all actual access to the cart is controlled
remotely by the RC-1, which uses the cart to record and play back both rhythm/chord and melody remotely by the RC-1, which uses the cart to record and play back both rhythm/chord and melody
data. The MB-1's sound hardware is then used to play back recorded melody data independently of data. The MB-1's sound hardware is then used to play back recorded melody data independently of
the keyboards. The RC-1 also has a "tone mix" feature, where note data received from one keyboard the keyboards. The RC-1 also has a "tone mix" feature, where note data received from one keyboard
is automatically forwarded to the other. is automatically forwarded to the other.
The individual units can also be used on their own; the MB-1 will also respond to notes and tone The individual units can also be used on their own; the MB-1 will also respond to notes and tone
selection commands via the DIN connector, but it needs the RC-1 present to do much else. selection commands via the DIN connector, but it needs the RC-1 present to do much else.
It's marked as "not working" for this reason. It's marked as "not working" for this reason.
This driver also features MIDI in/thru support via an "adapter" device which translates a subset This driver also features MIDI in/thru support via an "adapter" device which translates a subset
of MIDI messages into the protocol used with the original connectors. of MIDI messages into the protocol used with the original connectors.
TODO: TODO:
- volume/expression pedal (for all systems) - volume/expression pedal (for all systems)
- fix aliasing in BBD output for some presets - fix aliasing in BBD output for some presets
***************************************************************************/ ***************************************************************************/
@ -778,7 +778,7 @@ INPUT_PORTS_START(ctfk1)
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E2") PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E2")
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F2") PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F2")
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("KC9") PORT_START("KC9")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tune Up") PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tune Up")
@ -790,7 +790,7 @@ INPUT_PORTS_START(ctfk1)
PORT_START("KCA") PORT_START("KCA")
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Sustain") PORT_TOGGLE PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Sustain") PORT_TOGGLE
PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED)
PORT_START("KCB") PORT_START("KCB")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED) // KI0->KCB diode PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED) // KI0->KCB diode
PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED)

View File

@ -2,66 +2,66 @@
// copyright-holders:Devin Acker // copyright-holders:Devin Acker
/*************************************************************************** /***************************************************************************
Casiotone 8000 / Symphonytron MIDI interface Casiotone 8000 / Symphonytron MIDI interface
Translates MIDI messages into the 4-bit parallel protocol used by the Symphonytron. Translates MIDI messages into the 4-bit parallel protocol used by the Symphonytron.
Aside from Note Off/On and Program Change messages, this also handles: Aside from Note Off/On and Program Change messages, this also handles:
- CC #1 (vibrato) - CC #1 (vibrato)
- CC #64 (sustain pedal) - CC #64 (sustain pedal)
- CC #69 (sustain switch) - CC #69 (sustain switch)
- CC #91 (reverb) - CC #91 (reverb)
- CC #93 (chorus) - CC #93 (chorus)
- CC #120 (all sound off) - CC #120 (all sound off)
- CC #121 (reset controllers) - CC #121 (reset controllers)
- CC #123 (all notes off) - CC #123 (all notes off)
- CC #124-127 (equivalent to 123, otherwise no effect) - CC #124-127 (equivalent to 123, otherwise no effect)
- MIDI reset (status 0xFF) - MIDI reset (status 0xFF)
Vibrato, reverb, and chorus CCs all behave as switches, where 64-127 is "on". Vibrato, reverb, and chorus CCs all behave as switches, where 64-127 is "on".
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Summary of 4-bit Symphonytron messages Summary of 4-bit Symphonytron messages
Messages are sent in 4-bit increments over the DIN connector, in the following order: Messages are sent in 4-bit increments over the DIN connector, in the following order:
- high nibble of command - high nibble of command
- number of following nibbles (normally 1 or 3) - number of following nibbles (normally 1 or 3)
- low nibble of command - low nibble of command
- high nibble of data (if any) - high nibble of data (if any)
- low nibble of data (if any) - low nibble of data (if any)
The exception is the reset command, which is a single 0xF nibble. The exception is the reset command, which is a single 0xF nibble.
The CT-8000 recognizes these messages: The CT-8000 recognizes these messages:
10 xx - set effects 10 xx - set effects
11 xx - lock effects (corresponding buttons/pedal do nothing while set) 11 xx - lock effects (corresponding buttons/pedal do nothing while set)
12 xx - ??? effects 12 xx - ??? effects
^^ bit 0 = reverb ^^ bit 0 = reverb
bit 1 = vibrato bit 1 = vibrato
bit 2 = sustain pedal (only affects the local keyboard) bit 2 = sustain pedal (only affects the local keyboard)
bit 3 = stereo chorus bit 3 = stereo chorus
bit 4 = sustain switch bit 4 = sustain switch
20 xx - set lowest possible note to send (default is none) 20 xx - set lowest possible note to send (default is none)
21 xx - set highest possible note to send (default is none) 21 xx - set highest possible note to send (default is none)
22 xx - set lowest possible note to receive/play (default is 0x21 = C2) 22 xx - set lowest possible note to receive/play (default is 0x21 = C2)
23 xx - set highest possible note to receive/play (default is 0x61 = C6) 23 xx - set highest possible note to receive/play (default is 0x61 = C6)
24 - stop all notes 24 - stop all notes
28 xx - note on or off 28 xx - note on or off
^^ bit 7 = note on, bits 6-4 = octave, bits 3-0 = note from 0x1 (C) to 0xC (B) ^^ bit 7 = note on, bits 6-4 = octave, bits 3-0 = note from 0x1 (C) to 0xC (B)
C0 xx - set tuning (signed, 1.5 cent increments, 0x32 = quarter tone up) C0 xx - set tuning (signed, 1.5 cent increments, 0x32 = quarter tone up)
E1 xx - set patch number E1 xx - set patch number
F - reset instrument F - reset instrument
The MB-1 recognizes all of the above, plus: The MB-1 recognizes all of the above, plus:
A0 xx - ??? A0 xx - ???
A1 xx - ??? A1 xx - ???
A2 xx - ??? A2 xx - ???
A3 xx - ??? A3 xx - ???
A4 - clear values from A0-A3 A4 - clear values from A0-A3
***************************************************************************/ ***************************************************************************/

View File

@ -3274,7 +3274,7 @@ void snowbros_state::init_gwasu()
rom[0xfdaa / 2] = 0x3345; rom[0xfdaa / 2] = 0x3345;
// checksum is done on startup, must equal 0 // checksum is done on startup, must equal 0
rom[0x54 / 2] = 0x11ef; rom[0x54 / 2] = 0x11ef;
} }

View File

@ -186,7 +186,7 @@ uint32_t asterix_state::screen_update_asterix(screen_device &screen, bitmap_ind1
m_k056832->tilemap_draw(screen, bitmap, cliprect, layer[2], K056832_DRAW_FLAG_MIRROR, 4); m_k056832->tilemap_draw(screen, bitmap, cliprect, layer[2], K056832_DRAW_FLAG_MIRROR, 4);
/* this isn't supported anymore and it is unsure if still needed; keeping here for reference /* this isn't supported anymore and it is unsure if still needed; keeping here for reference
pdrawgfx_shadow_lowpri = 1; fix shadows in front of feet */ pdrawgfx_shadow_lowpri = 1; fix shadows in front of feet */
m_k053244->sprites_draw(bitmap, cliprect, screen.priority()); m_k053244->sprites_draw(bitmap, cliprect, screen.priority());
m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 0); m_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 0);

View File

@ -153,7 +153,7 @@ Bonanza's Joker Poker control panel
<bounds left="0" top="0" right="4" bottom="3" /> <bounds left="0" top="0" right="4" bottom="3" />
</screen> </screen>
<element ref="cpanel"> <element ref="cpanel">
<bounds left="0" right="4" top="3" bottom="3.80" /> <bounds left="0" right="4" top="3" bottom="3.80" />
</element> </element>
@ -217,7 +217,7 @@ Bonanza's Joker Poker control panel
</element> </element>
<!-- second line: Big - Small - Double Up/Hit - Take/Stand - Cancel - Deal - Bet/Split --> <!-- second line: Big - Small - Double Up/Hit - Take/Stand - Cancel - Deal - Bet/Split -->
<element name="lamp1" ref="buttonedge_r" inputtag="INPUT6" inputmask="0x02"> <element name="lamp1" ref="buttonedge_r" inputtag="INPUT6" inputmask="0x02">
<bounds x="3.445" y="3.48" width="0.44" height="0.24" /> <bounds x="3.445" y="3.48" width="0.44" height="0.24" />
</element> </element>
@ -266,6 +266,6 @@ Bonanza's Joker Poker control panel
<element name="lamp3" ref="big"> <element name="lamp3" ref="big">
<bounds x="0.135" y="3.5" width="0.40" height="0.20" /> <bounds x="0.135" y="3.5" width="0.40" height="0.20" />
</element> </element>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -60,7 +60,7 @@ copyright-holders: Roberto Fresca & Grull Osgo
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0.1" y="0.15" width="0.8" height="0.7" /> <bounds x="0.1" y="0.15" width="0.8" height="0.7" />
</text> </text>
</element> </element>
<element name="BUTTON7" defstate="0"> <element name="BUTTON7" defstate="0">
<rect state="1"><color red="1.0" green="0.5" blue="0.0" /></rect> <rect state="1"><color red="1.0" green="0.5" blue="0.0" /></rect>
@ -69,7 +69,7 @@ copyright-holders: Roberto Fresca & Grull Osgo
<color red="0.0" green="0.0" blue="0.0" /> <color red="0.0" green="0.0" blue="0.0" />
<bounds x="0.1" y="0.15" width="0.8" height="0.7" /> <bounds x="0.1" y="0.15" width="0.8" height="0.7" />
</text> </text>
</element> </element>
<element name="BUTTONBASE" defstate="0"> <element name="BUTTONBASE" defstate="0">
<rect state="1"><color red="0.80" green="0.80" blue="0.80" /></rect> <rect state="1"><color red="0.80" green="0.80" blue="0.80" /></rect>

View File

@ -8,7 +8,7 @@ license:CC0-1.0
<element name="line"><rect><color red="0.55" green="0.55" blue="0.575" /></rect></element> <element name="line"><rect><color red="0.55" green="0.55" blue="0.575" /></rect></element>
<element name="line_white"><rect><color red="1" green="1" blue="0.95" /></rect></element> <element name="line_white"><rect><color red="1" green="1" blue="0.95" /></rect></element>
<element name="line_black"><rect><color red="0" green="0" blue="0" /></rect></element> <element name="line_black"><rect><color red="0" green="0" blue="0" /></rect></element>
<element name="button_back"> <element name="button_back">
<rect><bounds x="0" y="0" width="1" height="20" /><color red="0.55" green="0.55" blue="0.575" /></rect> <rect><bounds x="0" y="0" width="1" height="20" /><color red="0.55" green="0.55" blue="0.575" /></rect>
<rect><bounds x="0" y="1" width="1" height="18" /><color red="0.65" green="0.65" blue="0.675" /></rect> <rect><bounds x="0" y="1" width="1" height="18" /><color red="0.65" green="0.65" blue="0.675" /></rect>
@ -32,7 +32,7 @@ license:CC0-1.0
<element name="set"><text string="SET"><color red="0" blue="0" green="0" /></text></element> <element name="set"><text string="SET"><color red="0" blue="0" green="0" /></text></element>
<element name="play"><text string="PLAY"><color red="0" blue="0" green="0" /></text></element> <element name="play"><text string="PLAY"><color red="0" blue="0" green="0" /></text></element>
<element name="tune"><text string="TUNE"><color red="0" blue="0" green="0" /></text></element> <element name="tune"><text string="TUNE"><color red="0" blue="0" green="0" /></text></element>
<element name="tone1"><text string="PIANO 1"><color red="0" blue="0" green="0" /></text></element> <element name="tone1"><text string="PIANO 1"><color red="0" blue="0" green="0" /></text></element>
<element name="tone2"><text string="PIPE ORGAN 1"><color red="0" blue="0" green="0" /></text></element> <element name="tone2"><text string="PIPE ORGAN 1"><color red="0" blue="0" green="0" /></text></element>
<element name="tone3"><text string="PIANO 2"><color red="0" blue="0" green="0" /></text></element> <element name="tone3"><text string="PIANO 2"><color red="0" blue="0" green="0" /></text></element>
@ -92,20 +92,20 @@ license:CC0-1.0
<element name="tone48"><text string="ELEC."><color red="0" blue="0" green="0" /></text></element> <element name="tone48"><text string="ELEC."><color red="0" blue="0" green="0" /></text></element>
<element name="tone48b"><text string="GUITAR 5"><color red="0" blue="0" green="0" /></text></element> <element name="tone48b"><text string="GUITAR 5"><color red="0" blue="0" green="0" /></text></element>
<element name="tone49"><text string="ELEC. BASS"><color red="0" blue="0" green="0" /></text></element> <element name="tone49"><text string="ELEC. BASS"><color red="0" blue="0" green="0" /></text></element>
<!-- button primitives --> <!-- button primitives -->
<element name="button_light" defstate="0"> <element name="button_light" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
<rect state="0"><color red="0.8" green="0.8" blue="0.8" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="0"><color red="0.8" green="0.8" blue="0.8" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
<rect state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="1"><color red="0.5" green="0.5" blue="0.5" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
</element> </element>
<element name="button_dark" defstate="0"> <element name="button_dark" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
<rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
<rect state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
</element> </element>
<element name="button_down" defstate="0"> <element name="button_down" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
<rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
@ -120,7 +120,7 @@ license:CC0-1.0
]]></data> ]]></data>
</image> </image>
</element> </element>
<element name="button_up" defstate="0"> <element name="button_up" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
<rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="0"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
@ -135,23 +135,23 @@ license:CC0-1.0
]]></data> ]]></data>
</image> </image>
</element> </element>
<element name="button_set" defstate="0"> <element name="button_set" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="10" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="10" height="10" /></rect>
<rect state="0"><color red="1.0" green="0.45" blue="0.0" /><bounds xc="5" yc="5" width="9" height="9" /></rect> <rect state="0"><color red="1.0" green="0.45" blue="0.0" /><bounds xc="5" yc="5" width="9" height="9" /></rect>
<rect state="1"><color red="0.8" green="0.25" blue="0" /><bounds xc="5" yc="5" width="9" height="9" /></rect> <rect state="1"><color red="0.8" green="0.25" blue="0" /><bounds xc="5" yc="5" width="9" height="9" /></rect>
</element> </element>
<element name="button_icon_up"> <element name="button_icon_up">
<rect><color red="0.7" green="0.7" blue="0.725" /><bounds x="0" y="0" width="5" height="5" /></rect> <rect><color red="0.7" green="0.7" blue="0.725" /><bounds x="0" y="0" width="5" height="5" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="1" width="3.5" height="4" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="1" width="3.5" height="4" /></rect>
</element> </element>
<element name="button_icon_down"> <element name="button_icon_down">
<rect><color red="0.7" green="0.7" blue="0.725" /><bounds x="0" y="0" width="5" height="5" /></rect> <rect><color red="0.7" green="0.7" blue="0.725" /><bounds x="0" y="0" width="5" height="5" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="3" width="3.5" height="2" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="3" width="3.5" height="2" /></rect>
</element> </element>
@ -203,11 +203,11 @@ license:CC0-1.0
<group name="left"> <group name="left">
<bounds x="0" y="0" width="80" height="120" /> <bounds x="0" y="0" width="80" height="120" />
<element ref="panel_back"><bounds x="0" y="0" width="80" height="120" /></element> <element ref="panel_back"><bounds x="0" y="0" width="80" height="120" /></element>
<element ref="line_black"><bounds xc="26" y="25" width="28" height="4" /></element> <element ref="line_black"><bounds xc="26" y="25" width="28" height="4" /></element>
<element ref="panel_back"><bounds xc="19.25" y="26" width="12.5" height="4" /></element> <element ref="panel_back"><bounds xc="19.25" y="26" width="12.5" height="4" /></element>
<element ref="panel_back"><bounds xc="32.75" y="26" width="12.5" height="4" /></element> <element ref="panel_back"><bounds xc="32.75" y="26" width="12.5" height="4" /></element>
<element ref="button_back"><bounds x="0" y="35" width="80" height="20" /></element> <element ref="button_back"><bounds x="0" y="35" width="80" height="20" /></element>
<element ref="cancel"><bounds xc="12" y="30" width="15" height="4" /></element> <element ref="cancel"><bounds xc="12" y="30" width="15" height="4" /></element>
<element ref="button_dark" inputtag="SWITCH" inputmask="0x01"><bounds xc="12" yc="45" width="9" height="18" /></element> <element ref="button_dark" inputtag="SWITCH" inputmask="0x01"><bounds xc="12" yc="45" width="9" height="18" /></element>
@ -223,7 +223,7 @@ license:CC0-1.0
<element ref="chorus"><bounds xc="68" y="30" width="15" height="4" /></element> <element ref="chorus"><bounds xc="68" y="30" width="15" height="4" /></element>
<element ref="button_dark" inputtag="KC9" inputmask="0x08"><bounds xc="68" yc="45" width="9" height="18" /></element> <element ref="button_dark" inputtag="KC9" inputmask="0x08"><bounds xc="68" yc="45" width="9" height="18" /></element>
<element ref="effect"><bounds xc="40" y="55" width="80" height="4" /></element> <element ref="effect"><bounds xc="40" y="55" width="80" height="4" /></element>
<element ref="tone_memory"><bounds xc="40" y="62" width="80" height="4" /></element> <element ref="tone_memory"><bounds xc="40" y="62" width="80" height="4" /></element>
<element ref="button_back"><bounds x="0" y="70" width="80" height="20" /></element> <element ref="button_back"><bounds x="0" y="70" width="80" height="20" /></element>
<element ref="num1"><bounds xc="19" y="66" width="15" height="4" /></element> <element ref="num1"><bounds xc="19" y="66" width="15" height="4" /></element>
@ -234,7 +234,7 @@ license:CC0-1.0
<element ref="button_light" inputtag="KCB" inputmask="0x04"><bounds xc="47" yc="80" width="9" height="16" /></element> <element ref="button_light" inputtag="KCB" inputmask="0x04"><bounds xc="47" yc="80" width="9" height="16" /></element>
<element ref="num4"><bounds xc="61" y="66" width="15" height="4" /></element> <element ref="num4"><bounds xc="61" y="66" width="15" height="4" /></element>
<element ref="button_light" inputtag="KCB" inputmask="0x08"><bounds xc="61" yc="80" width="9" height="16" /></element> <element ref="button_light" inputtag="KCB" inputmask="0x08"><bounds xc="61" yc="80" width="9" height="16" /></element>
<element ref="mode"><bounds xc="61" y="92" width="15" height="4" /></element> <element ref="mode"><bounds xc="61" y="92" width="15" height="4" /></element>
<element ref="button_set" inputtag="KCB" inputmask="0x10"><bounds xc="61" yc="106" width="16" height="16" /></element> <element ref="button_set" inputtag="KCB" inputmask="0x10"><bounds xc="61" yc="106" width="16" height="16" /></element>
<!-- these are supposed to be to the right of the button but here they are on the left for better readability --> <!-- these are supposed to be to the right of the button but here they are on the left for better readability -->
@ -319,7 +319,7 @@ license:CC0-1.0
<group name="key_labels"> <group name="key_labels">
<bounds x="0" y="0" width="580" height="20" /> <bounds x="0" y="0" width="580" height="20" />
<element ref="tone2"><bounds xc="18" y="2" width="30" height="4" /></element> <element ref="tone2"><bounds xc="18" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="18" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="18" y="7" width="0.75" height="13" /></element>
<element ref="tone4"><bounds xc="43" y="2" width="30" height="4" /></element> <element ref="tone4"><bounds xc="43" y="2" width="30" height="4" /></element>
@ -330,7 +330,7 @@ license:CC0-1.0
<element ref="line_white"><bounds xc="100" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="100" y="7" width="0.75" height="13" /></element>
<element ref="tone11"><bounds xc="123" y="2" width="30" height="4" /></element> <element ref="tone11"><bounds xc="123" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="123" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="123" y="7" width="0.75" height="13" /></element>
<element ref="tone1"><bounds x="-1" y="15" width="20" height="4" /></element> <element ref="tone1"><bounds x="-1" y="15" width="20" height="4" /></element>
<element ref="tone3"><bounds x="20" y="15" width="20" height="4" /></element> <element ref="tone3"><bounds x="20" y="15" width="20" height="4" /></element>
<element ref="tone5"><bounds x="41" y="15" width="20" height="4" /></element> <element ref="tone5"><bounds x="41" y="15" width="20" height="4" /></element>
@ -340,7 +340,7 @@ license:CC0-1.0
<element ref="tone10"><bounds x="101" y="15" width="20" height="4" /></element> <element ref="tone10"><bounds x="101" y="15" width="20" height="4" /></element>
<element ref="tone12"><bounds x="121" y="11" width="20" height="4" /></element> <element ref="tone12"><bounds x="121" y="11" width="20" height="4" /></element>
<element ref="tone12b"><bounds x="121" y="15" width="20" height="4" /></element> <element ref="tone12b"><bounds x="121" y="15" width="20" height="4" /></element>
<element ref="tone14"><bounds xc="158" y="2" width="30" height="4" /></element> <element ref="tone14"><bounds xc="158" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="158" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="158" y="7" width="0.75" height="13" /></element>
<element ref="tone16"><bounds xc="183" y="2" width="30" height="4" /></element> <element ref="tone16"><bounds xc="183" y="2" width="30" height="4" /></element>
@ -351,7 +351,7 @@ license:CC0-1.0
<element ref="line_white"><bounds xc="240" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="240" y="7" width="0.75" height="13" /></element>
<element ref="tone23"><bounds xc="263" y="2" width="30" height="4" /></element> <element ref="tone23"><bounds xc="263" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="263" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="263" y="7" width="0.75" height="13" /></element>
<element ref="tone13"><bounds x="140" y="11" width="20" height="4" /></element> <element ref="tone13"><bounds x="140" y="11" width="20" height="4" /></element>
<element ref="tone13b"><bounds x="140" y="15" width="20" height="4" /></element> <element ref="tone13b"><bounds x="140" y="15" width="20" height="4" /></element>
<element ref="tone15"><bounds x="160" y="11" width="20" height="4" /></element> <element ref="tone15"><bounds x="160" y="11" width="20" height="4" /></element>
@ -361,7 +361,7 @@ license:CC0-1.0
<element ref="tone20"><bounds x="220" y="15" width="20" height="4" /></element> <element ref="tone20"><bounds x="220" y="15" width="20" height="4" /></element>
<element ref="tone22"><bounds x="240" y="15" width="20" height="4" /></element> <element ref="tone22"><bounds x="240" y="15" width="20" height="4" /></element>
<element ref="tone24"><bounds x="261" y="15" width="20" height="4" /></element> <element ref="tone24"><bounds x="261" y="15" width="20" height="4" /></element>
<element ref="tone26"><bounds xc="298" y="2" width="30" height="4" /></element> <element ref="tone26"><bounds xc="298" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="298" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="298" y="7" width="0.75" height="13" /></element>
<element ref="tone28"><bounds xc="323" y="2" width="30" height="4" /></element> <element ref="tone28"><bounds xc="323" y="2" width="30" height="4" /></element>
@ -372,7 +372,7 @@ license:CC0-1.0
<element ref="line_white"><bounds xc="380" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="380" y="7" width="0.75" height="13" /></element>
<element ref="tone35"><bounds xc="403" y="2" width="30" height="4" /></element> <element ref="tone35"><bounds xc="403" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="403" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="403" y="7" width="0.75" height="13" /></element>
<element ref="tone25"><bounds x="280" y="15" width="20" height="4" /></element> <element ref="tone25"><bounds x="280" y="15" width="20" height="4" /></element>
<element ref="tone27"><bounds x="300" y="15" width="20" height="4" /></element> <element ref="tone27"><bounds x="300" y="15" width="20" height="4" /></element>
<element ref="tone29"><bounds x="321" y="15" width="20" height="4" /></element> <element ref="tone29"><bounds x="321" y="15" width="20" height="4" /></element>
@ -381,7 +381,7 @@ license:CC0-1.0
<element ref="tone32"><bounds x="360" y="15" width="20" height="4" /></element> <element ref="tone32"><bounds x="360" y="15" width="20" height="4" /></element>
<element ref="tone34"><bounds x="380" y="15" width="20" height="4" /></element> <element ref="tone34"><bounds x="380" y="15" width="20" height="4" /></element>
<element ref="tone36"><bounds x="401" y="15" width="20" height="4" /></element> <element ref="tone36"><bounds x="401" y="15" width="20" height="4" /></element>
<element ref="tone38"><bounds xc="432" y="2" width="30" height="4" /></element> <element ref="tone38"><bounds xc="432" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="438" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="438" y="7" width="0.75" height="13" /></element>
<element ref="tone40"><bounds xc="466" y="2" width="30" height="4" /></element> <element ref="tone40"><bounds xc="466" y="2" width="30" height="4" /></element>
@ -392,7 +392,7 @@ license:CC0-1.0
<element ref="line_white"><bounds xc="520" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="520" y="7" width="0.75" height="13" /></element>
<element ref="tone47"><bounds xc="543" y="2" width="30" height="4" /></element> <element ref="tone47"><bounds xc="543" y="2" width="30" height="4" /></element>
<element ref="line_white"><bounds xc="543" y="7" width="0.75" height="13" /></element> <element ref="line_white"><bounds xc="543" y="7" width="0.75" height="13" /></element>
<element ref="tone37"><bounds x="419" y="15" width="20" height="4" /></element> <element ref="tone37"><bounds x="419" y="15" width="20" height="4" /></element>
<element ref="tone39"><bounds x="440" y="15" width="20" height="4" /></element> <element ref="tone39"><bounds x="440" y="15" width="20" height="4" /></element>
<element ref="tone41"><bounds x="461" y="11" width="20" height="4" /></element> <element ref="tone41"><bounds x="461" y="11" width="20" height="4" /></element>
@ -406,7 +406,7 @@ license:CC0-1.0
<element ref="tone48"><bounds x="541" y="11" width="20" height="4" /></element> <element ref="tone48"><bounds x="541" y="11" width="20" height="4" /></element>
<element ref="tone48b"><bounds x="541" y="15" width="20" height="4" /></element> <element ref="tone48b"><bounds x="541" y="15" width="20" height="4" /></element>
<element ref="tone49"><bounds x="560" y="15" width="20" height="4" /></element> <element ref="tone49"><bounds x="560" y="15" width="20" height="4" /></element>
</group> </group>
<view name="Keyboard"> <view name="Keyboard">

View File

@ -8,7 +8,7 @@ license:CC0-1.0
<element name="brown"><rect><color red="0.365" green="0.263" blue="0.17" /></rect></element> <element name="brown"><rect><color red="0.365" green="0.263" blue="0.17" /></rect></element>
<element name="line"><rect><color red="0.55" green="0.55" blue="0.575" /></rect></element> <element name="line"><rect><color red="0.55" green="0.55" blue="0.575" /></rect></element>
<element name="line_white"><rect><color red="1" green="1" blue="0.95" /></rect></element> <element name="line_white"><rect><color red="1" green="1" blue="0.95" /></rect></element>
<element name="button_back"> <element name="button_back">
<rect><bounds x="0" y="0" width="1" height="20" /><color red="0.25" green="0.25" blue="0.275" /></rect> <rect><bounds x="0" y="0" width="1" height="20" /><color red="0.25" green="0.25" blue="0.275" /></rect>
<rect><bounds x="0" y="1" width="1" height="18" /><color red="0.3" green="0.3" blue="0.325" /></rect> <rect><bounds x="0" y="1" width="1" height="18" /><color red="0.3" green="0.3" blue="0.325" /></rect>
@ -35,7 +35,7 @@ license:CC0-1.0
<element name="on"><text string="ON" align="1"><color red="0" blue="0" green="0" /></text></element> <element name="on"><text string="ON" align="1"><color red="0" blue="0" green="0" /></text></element>
<element name="off"><text string="OFF" align="1"><color red="0" blue="0" green="0" /></text></element> <element name="off"><text string="OFF" align="1"><color red="0" blue="0" green="0" /></text></element>
<element name="tune"><text string="TUNE" /></element> <element name="tune"><text string="TUNE" /></element>
<element name="tone1"><text string="ORGAN 1"><color red="0" blue="0" green="0" /></text></element> <element name="tone1"><text string="ORGAN 1"><color red="0" blue="0" green="0" /></text></element>
<element name="tone2"><text string="ORGAN 4"><color red="0" blue="0" green="0" /></text></element> <element name="tone2"><text string="ORGAN 4"><color red="0" blue="0" green="0" /></text></element>
<element name="tone3"><text string="ORGAN 2"><color red="0" blue="0" green="0" /></text></element> <element name="tone3"><text string="ORGAN 2"><color red="0" blue="0" green="0" /></text></element>
@ -58,7 +58,7 @@ license:CC0-1.0
<element name="tone16"><text string="HARPSICHORD 2"><color red="0" blue="0" green="0" /></text></element> <element name="tone16"><text string="HARPSICHORD 2"><color red="0" blue="0" green="0" /></text></element>
<element name="tone17"><text string="PIANO"><color red="0" blue="0" green="0" /></text></element> <element name="tone17"><text string="PIANO"><color red="0" blue="0" green="0" /></text></element>
<element name="tone18"><text string="SYNTH CHIME"><color red="0" blue="0" green="0" /></text></element> <element name="tone18"><text string="SYNTH CHIME"><color red="0" blue="0" green="0" /></text></element>
<!-- button primitives --> <!-- button primitives -->
<element name="button_down" defstate="0"> <element name="button_down" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
@ -74,7 +74,7 @@ license:CC0-1.0
]]></data> ]]></data>
</image> </image>
</element> </element>
<element name="button_up" defstate="0"> <element name="button_up" defstate="0">
<rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect> <rect><color red="0.1" green="0.1" blue="0.1" /><bounds x="0" y="0" width="5" height="10" /></rect>
<rect state="0"><color red="0.8" green="0.8" blue="0.8" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect> <rect state="0"><color red="0.8" green="0.8" blue="0.8" /><bounds xc="2.5" yc="5" width="4" height="9" /></rect>
@ -98,17 +98,17 @@ license:CC0-1.0
<disk state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="10" y="1" width="18" height="18" /></disk> <disk state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="10" y="1" width="18" height="18" /></disk>
<rect state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="10" y="10" width="18" height="40" /></rect> <rect state="1"><color red="0.15" green="0.15" blue="0.15" /><bounds xc="10" y="10" width="18" height="40" /></rect>
</element> </element>
<element name="button_icon_up"> <element name="button_icon_up">
<rect><color red="0.75" green="0.75" blue="0.775" /><bounds x="0" y="0" width="5" height="5" /></rect> <rect><color red="0.75" green="0.75" blue="0.775" /><bounds x="0" y="0" width="5" height="5" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="1" width="3.5" height="4" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="1" width="3.5" height="4" /></rect>
</element> </element>
<element name="button_icon_down"> <element name="button_icon_down">
<rect><color red="0.75" green="0.75" blue="0.775" /><bounds x="0" y="0" width="5" height="5" /></rect> <rect><color red="0.75" green="0.75" blue="0.775" /><bounds x="0" y="0" width="5" height="5" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="4" width="5" height="1" /></rect>
<rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="3" width="3.5" height="2" /></rect> <rect><color red="0" green="0" blue="0" /><bounds xc="2.5" y="3" width="3.5" height="2" /></rect>
</element> </element>
@ -139,21 +139,21 @@ license:CC0-1.0
<element ref="tune"><bounds xc="270" y="30" width="40" height="9" /></element> <element ref="tune"><bounds xc="270" y="30" width="40" height="9" /></element>
<element ref="button_down" inputtag="KC9" inputmask="0x04"><bounds xc="260" y="42" width="10" height="20" /></element> <element ref="button_down" inputtag="KC9" inputmask="0x04"><bounds xc="260" y="42" width="10" height="20" /></element>
<element ref="button_up" inputtag="KC9" inputmask="0x02"><bounds xc="280" y="42" width="10" height="20" /></element> <element ref="button_up" inputtag="KC9" inputmask="0x02"><bounds xc="280" y="42" width="10" height="20" /></element>
<element ref="select"><bounds xc="90" y="75" width="60" height="11" /></element> <element ref="select"><bounds xc="90" y="75" width="60" height="11" /></element>
<element ref="button_icon_down"><bounds x="73" y="87" width="9" height="9" /></element> <element ref="button_icon_down"><bounds x="73" y="87" width="9" height="9" /></element>
<element ref="foot"><bounds x="85" y="87" width="60" height="11" /></element> <element ref="foot"><bounds x="85" y="87" width="60" height="11" /></element>
<element ref="button_icon_up"><bounds x="73" y="99" width="9" height="9" /></element> <element ref="button_icon_up"><bounds x="73" y="99" width="9" height="9" /></element>
<element ref="auto"><bounds x="85" y="99" width="60" height="11" /></element> <element ref="auto"><bounds x="85" y="99" width="60" height="11" /></element>
<element ref="button" inputtag="KC9" inputmask="0x10"><bounds xc="90" y="115" width="20" height="52" /></element> <element ref="button" inputtag="KC9" inputmask="0x10"><bounds xc="90" y="115" width="20" height="52" /></element>
<element ref="mode"><bounds xc="180" y="75" width="60" height="11" /></element> <element ref="mode"><bounds xc="180" y="75" width="60" height="11" /></element>
<element ref="button_icon_down"><bounds x="163" y="87" width="9" height="9" /></element> <element ref="button_icon_down"><bounds x="163" y="87" width="9" height="9" /></element>
<element ref="set"><bounds x="175" y="87" width="60" height="11" /></element> <element ref="set"><bounds x="175" y="87" width="60" height="11" /></element>
<element ref="button_icon_up"><bounds x="163" y="99" width="9" height="9" /></element> <element ref="button_icon_up"><bounds x="163" y="99" width="9" height="9" /></element>
<element ref="play"><bounds x="175" y="99" width="60" height="11" /></element> <element ref="play"><bounds x="175" y="99" width="60" height="11" /></element>
<element ref="button" inputtag="KCB" inputmask="0x10"><bounds xc="180" y="115" width="20" height="52" /></element> <element ref="button" inputtag="KCB" inputmask="0x10"><bounds xc="180" y="115" width="20" height="52" /></element>
<element ref="sustain"><bounds xc="270" y="75" width="60" height="11" /></element> <element ref="sustain"><bounds xc="270" y="75" width="60" height="11" /></element>
<element ref="button_icon_down"><bounds x="253" y="87" width="9" height="9" /></element> <element ref="button_icon_down"><bounds x="253" y="87" width="9" height="9" /></element>
<element ref="on"><bounds x="265" y="87" width="60" height="11" /></element> <element ref="on"><bounds x="265" y="87" width="60" height="11" /></element>
@ -165,7 +165,7 @@ license:CC0-1.0
<!-- keyboard group --> <!-- keyboard group -->
<group name="keyboard"> <group name="keyboard">
<element ref="keyfill"><bounds x="0" y="0" width="660" height="300" /></element> <element ref="keyfill"><bounds x="0" y="0" width="660" height="300" /></element>
<element ref="button_back"><bounds x="0" y="100" width="660" height="30" /></element> <element ref="button_back"><bounds x="0" y="100" width="660" height="30" /></element>
<element ref="button_back"><bounds x="0" y="200" width="660" height="30" /></element> <element ref="button_back"><bounds x="0" y="200" width="660" height="30" /></element>
@ -174,7 +174,7 @@ license:CC0-1.0
<element ref="whitekey" inputtag="KC0" inputmask="0x04"><bounds xc="90" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC0" inputmask="0x04"><bounds xc="90" y="0" width="25" height="245" /></element>
<element ref="blackkey" inputtag="KC0" inputmask="0x08"><bounds xc="120" y="0" width="25" height="125" /></element> <element ref="blackkey" inputtag="KC0" inputmask="0x08"><bounds xc="120" y="0" width="25" height="125" /></element>
<element ref="whitekey" inputtag="KC0" inputmask="0x10"><bounds xc="150" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC0" inputmask="0x10"><bounds xc="150" y="0" width="25" height="245" /></element>
<element ref="whitekey" inputtag="KC0" inputmask="0x20"><bounds xc="210" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC0" inputmask="0x20"><bounds xc="210" y="0" width="25" height="245" /></element>
<element ref="blackkey" inputtag="KC1" inputmask="0x01"><bounds xc="240" y="0" width="25" height="125" /></element> <element ref="blackkey" inputtag="KC1" inputmask="0x01"><bounds xc="240" y="0" width="25" height="125" /></element>
<element ref="whitekey" inputtag="KC1" inputmask="0x02"><bounds xc="270" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC1" inputmask="0x02"><bounds xc="270" y="0" width="25" height="245" /></element>
@ -182,19 +182,19 @@ license:CC0-1.0
<element ref="whitekey" inputtag="KC1" inputmask="0x08"><bounds xc="330" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC1" inputmask="0x08"><bounds xc="330" y="0" width="25" height="245" /></element>
<element ref="blackkey" inputtag="KC1" inputmask="0x10"><bounds xc="360" y="0" width="25" height="125" /></element> <element ref="blackkey" inputtag="KC1" inputmask="0x10"><bounds xc="360" y="0" width="25" height="125" /></element>
<element ref="whitekey" inputtag="KC1" inputmask="0x20"><bounds xc="390" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC1" inputmask="0x20"><bounds xc="390" y="0" width="25" height="245" /></element>
<element ref="whitekey" inputtag="KC2" inputmask="0x01"><bounds xc="450" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC2" inputmask="0x01"><bounds xc="450" y="0" width="25" height="245" /></element>
<element ref="blackkey" inputtag="KC2" inputmask="0x02"><bounds xc="480" y="0" width="25" height="125" /></element> <element ref="blackkey" inputtag="KC2" inputmask="0x02"><bounds xc="480" y="0" width="25" height="125" /></element>
<element ref="whitekey" inputtag="KC2" inputmask="0x04"><bounds xc="510" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC2" inputmask="0x04"><bounds xc="510" y="0" width="25" height="245" /></element>
<element ref="blackkey" inputtag="KC2" inputmask="0x08"><bounds xc="540" y="0" width="25" height="125" /></element> <element ref="blackkey" inputtag="KC2" inputmask="0x08"><bounds xc="540" y="0" width="25" height="125" /></element>
<element ref="whitekey" inputtag="KC2" inputmask="0x10"><bounds xc="570" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC2" inputmask="0x10"><bounds xc="570" y="0" width="25" height="245" /></element>
<element ref="whitekey" inputtag="KC2" inputmask="0x20"><bounds xc="630" y="0" width="25" height="245" /></element> <element ref="whitekey" inputtag="KC2" inputmask="0x20"><bounds xc="630" y="0" width="25" height="245" /></element>
</group> </group>
<group name="key_labels"> <group name="key_labels">
<bounds x="0" y="0" width="660" height="40" /> <bounds x="0" y="0" width="660" height="40" />
<element ref="tone2"><bounds xc="60" y="11" width="60" height="9" /></element> <element ref="tone2"><bounds xc="60" y="11" width="60" height="9" /></element>
<element ref="line_white"><bounds xc="60" y="20" width="1.5" height="20" /></element> <element ref="line_white"><bounds xc="60" y="20" width="1.5" height="20" /></element>
<element ref="tone4"><bounds xc="120" y="11" width="60" height="9" /></element> <element ref="tone4"><bounds xc="120" y="11" width="60" height="9" /></element>
@ -207,7 +207,7 @@ license:CC0-1.0
<element ref="tone11"><bounds xc="360" y="3" width="55" height="9" /></element> <element ref="tone11"><bounds xc="360" y="3" width="55" height="9" /></element>
<element ref="tone11b"><bounds xc="360" y="11" width="55" height="9" /></element> <element ref="tone11b"><bounds xc="360" y="11" width="55" height="9" /></element>
<element ref="line_white"><bounds xc="360" y="20" width="1.5" height="20" /></element> <element ref="line_white"><bounds xc="360" y="20" width="1.5" height="20" /></element>
<element ref="tone1"><bounds xc="30" y="30" width="60" height="9" /></element> <element ref="tone1"><bounds xc="30" y="30" width="60" height="9" /></element>
<element ref="tone3"><bounds xc="90" y="30" width="60" height="9" /></element> <element ref="tone3"><bounds xc="90" y="30" width="60" height="9" /></element>
<element ref="tone5"><bounds xc="150" y="30" width="60" height="9" /></element> <element ref="tone5"><bounds xc="150" y="30" width="60" height="9" /></element>
@ -217,12 +217,12 @@ license:CC0-1.0
<element ref="tone10b"><bounds xc="330" y="30" width="55" height="9" /></element> <element ref="tone10b"><bounds xc="330" y="30" width="55" height="9" /></element>
<element ref="tone12"><bounds xc="390" y="22" width="55" height="9" /></element> <element ref="tone12"><bounds xc="390" y="22" width="55" height="9" /></element>
<element ref="tone12b"><bounds xc="390" y="30" width="55" height="9" /></element> <element ref="tone12b"><bounds xc="390" y="30" width="55" height="9" /></element>
<element ref="tone14"><bounds xc="480" y="11" width="60" height="9" /></element> <element ref="tone14"><bounds xc="480" y="11" width="60" height="9" /></element>
<element ref="line_white"><bounds xc="480" y="20" width="1.5" height="20" /></element> <element ref="line_white"><bounds xc="480" y="20" width="1.5" height="20" /></element>
<element ref="tone16"><bounds xc="540" y="11" width="60" height="9" /></element> <element ref="tone16"><bounds xc="540" y="11" width="60" height="9" /></element>
<element ref="line_white"><bounds xc="540" y="20" width="1.5" height="20" /></element> <element ref="line_white"><bounds xc="540" y="20" width="1.5" height="20" /></element>
<element ref="tone13"><bounds xc="450" y="30" width="60" height="9" /></element> <element ref="tone13"><bounds xc="450" y="30" width="60" height="9" /></element>
<element ref="tone15"><bounds xc="510" y="30" width="60" height="9" /></element> <element ref="tone15"><bounds xc="510" y="30" width="60" height="9" /></element>
<element ref="tone17"><bounds xc="570" y="30" width="60" height="9" /></element> <element ref="tone17"><bounds xc="570" y="30" width="60" height="9" /></element>

View File

@ -153,7 +153,7 @@ license:CC0-1.0
<element name="lamp1" ref="DEAL" inputtag="IN0-0" inputmask="0x08"> <element name="lamp1" ref="DEAL" inputtag="IN0-0" inputmask="0x08">
<bounds x="3.25" y="3.45" width="0.50" height="0.24" /> <bounds x="3.25" y="3.45" width="0.50" height="0.24" />
</element> </element>
<element name="lamp5" ref="HE1"> <element name="lamp5" ref="HE1">
<bounds x="0.25" y="3.77" width="0.5" height="0.12" /> <bounds x="0.25" y="3.77" width="0.5" height="0.12" />
</element> </element>

View File

@ -153,7 +153,7 @@ license:CC0-1.0
<element name="lamp1" ref="DEAL" inputtag="IN0-0" inputmask="0x08"> <element name="lamp1" ref="DEAL" inputtag="IN0-0" inputmask="0x08">
<bounds x="3.25" y="3.45" width="0.50" height="0.24" /> <bounds x="3.25" y="3.45" width="0.50" height="0.24" />
</element> </element>
<element name="lamp5" ref="HE1"> <element name="lamp5" ref="HE1">
<bounds x="0.25" y="3.77" width="0.5" height="0.12" /> <bounds x="0.25" y="3.77" width="0.5" height="0.12" />
</element> </element>

View File

@ -154,7 +154,7 @@ Super Mini-Boy control panel
<bounds left="0" top="0" right="4" bottom="3" /> <bounds left="0" top="0" right="4" bottom="3" />
</screen> </screen>
<element ref="cpanel"> <element ref="cpanel">
<bounds left="0" right="4" top="3" bottom="3.80" /> <bounds left="0" right="4" top="3" bottom="3.80" />
</element> </element>
@ -218,7 +218,7 @@ Super Mini-Boy control panel
</element> </element>
<!-- second line: Big - Small - Double Up/Hit - Take/Stand - Cancel - Deal - Bet/Split --> <!-- second line: Big - Small - Double Up/Hit - Take/Stand - Cancel - Deal - Bet/Split -->
<element name="lamp1" ref="buttonedge_r" inputtag="INPUT6" inputmask="0x02"> <element name="lamp1" ref="buttonedge_r" inputtag="INPUT6" inputmask="0x02">
<bounds x="3.445" y="3.48" width="0.44" height="0.24" /> <bounds x="3.445" y="3.48" width="0.44" height="0.24" />
</element> </element>
@ -267,6 +267,6 @@ Super Mini-Boy control panel
<element name="lamp3" ref="big"> <element name="lamp3" ref="big">
<bounds x="0.135" y="3.5" width="0.40" height="0.20" /> <bounds x="0.135" y="3.5" width="0.40" height="0.20" />
</element> </element>
</view> </view>
</mamelayout> </mamelayout>

View File

@ -463,8 +463,8 @@ ioport_value wmg_state::wmg_mux_r()
u8 wmg_state::wmg_pia_0_r(offs_t offset) u8 wmg_state::wmg_pia_0_r(offs_t offset)
{ {
/* if player presses P1 and P2 in a game, return to the menu. /* if player presses P1 and P2 in a game, return to the menu.
Since there is no code in rom to handle this, it must be a hardware feature Since there is no code in rom to handle this, it must be a hardware feature
which probably just resets the cpu. */ which probably just resets the cpu. */
uint8_t const data = m_pia[0]->read(offset); uint8_t const data = m_pia[0]->read(offset);

View File

@ -572,7 +572,7 @@
- How to Set the Password: - How to Set the Password:
1) Press and hold the PROGRAM key (key 9) while turning on or resetting the machine. 1) Press and hold the PROGRAM key (key 9) while turning on or resetting the machine.
(The word 'TESTING' will be displayed on the screen) (The word 'TESTING' will be displayed on the screen)
2) Enter the first desired input of the password, then press DOWN to confirm the choice. 2) Enter the first desired input of the password, then press DOWN to confirm the choice.
3) Enter the second desired input of the password, then press DOWN to confirm the choice. 3) Enter the second desired input of the password, then press DOWN to confirm the choice.
4) Enter the third desired input of the password, then press DOWN to confirm the choice. 4) Enter the third desired input of the password, then press DOWN to confirm the choice.
@ -1198,7 +1198,7 @@ private:
required_shared_ptr<uint8_t> m_videoram; required_shared_ptr<uint8_t> m_videoram;
required_shared_ptr<uint8_t> m_colorram; required_shared_ptr<uint8_t> m_colorram;
optional_device<ticket_dispenser_device> m_hopper; optional_device<ticket_dispenser_device> m_hopper;
optional_device<ay8910_device> m_ay8910; optional_device<ay8910_device> m_ay8910;
output_finder<9> m_lamps; output_finder<9> m_lamps;
@ -2078,7 +2078,7 @@ static INPUT_PORTS_START( jkrbonus )
PORT_MODIFY("IN0-3") PORT_MODIFY("IN0-3")
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Weight (Coupon In)") PORT_CODE(KEYCODE_H) PORT_TOGGLE PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Weight (Coupon In)") PORT_CODE(KEYCODE_H) PORT_TOGGLE
PORT_MODIFY("SW1") PORT_MODIFY("SW1")
PORT_DIPNAME( 0x20, 0x20, "50hz/60hz" ) PORT_DIPLOCATION("SW1:2") PORT_DIPNAME( 0x20, 0x20, "50hz/60hz" ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x20, "50hz" ) PORT_DIPSETTING( 0x20, "50hz" )
@ -2217,7 +2217,7 @@ static INPUT_PORTS_START( pottnpkr )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coupon (Note In)") PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_NAME("Coupon (Note In)")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin In") PORT_IMPULSE(3) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_NAME("Coin In") PORT_IMPULSE(3)
//* PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN ) //* PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Weight (Coupon In)") PORT_CODE(KEYCODE_H) PORT_TOGGLE PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Weight (Coupon In)") PORT_CODE(KEYCODE_H) PORT_TOGGLE
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_UNKNOWN )
PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
@ -6066,7 +6066,7 @@ ROM_END
The second set is a hack of the first with unknown mods. The second set is a hack of the first with unknown mods.
*/ */
ROM_START( potnpkro ) // ICP-1 wires hack set. ROM_START( potnpkro ) // ICP-1 wires hack set.
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "7.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) ROM_LOAD( "7.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) )
ROM_LOAD( "x.17a", 0x7000, 0x1000, CRC(1694a0d8) SHA1(bb1132d1e75347ad5156d2b3866aad255f7d53ca) ) ROM_LOAD( "x.17a", 0x7000, 0x1000, CRC(1694a0d8) SHA1(bb1132d1e75347ad5156d2b3866aad255f7d53ca) )
@ -6085,7 +6085,7 @@ ROM_START( potnpkro ) // ICP-1 wires hack set.
ROM_LOAD( "tbp24s10n_wh.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) ) ROM_LOAD( "tbp24s10n_wh.bin", 0x0000, 0x0100, CRC(7f31066b) SHA1(15420780ec6b2870fc4539ec3afe4f0c58eedf12) )
ROM_END ROM_END
ROM_START( potnpkrp ) // ICP-1 PROM mod set. ROM_START( potnpkrp ) // ICP-1 PROM mod set.
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_LOAD( "6.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) ROM_LOAD( "6.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) )
ROM_LOAD( "95_09_hn71_7.17a", 0x7000, 0x1000, CRC(2353317a) SHA1(18bf8cfe30aaa4b05207cc250ec1c024bc19ed56) ) ROM_LOAD( "95_09_hn71_7.17a", 0x7000, 0x1000, CRC(2353317a) SHA1(18bf8cfe30aaa4b05207cc250ec1c024bc19ed56) )

View File

@ -13,7 +13,7 @@
Games supported: Games supported:
* Le Pendu (Bilingue, Version 04), 198?, Avenir Amusement Inc. * Le Pendu (Bilingue, Version 04), 198?, Avenir Amusement Inc.
* Code Magik (Ver 5.5) / Super 7 (stealth game), 198?, Voyageur de L'Espace Inc. * Code Magik (Ver 5.5) / Super 7 (stealth game), 198?, Voyageur de L'Espace Inc.
@ -79,9 +79,9 @@
*********************************************************************************** ***********************************************************************************
Code Magik (Ver 5.5) / Super 7 Code Magik (Ver 5.5) / Super 7
This is a very rare game that has a gambling game hidden inside in stealth mode. This is a very rare game that has a gambling game hidden inside in stealth mode.
The front game is a very good Mastermind type game, where you must to guess The front game is a very good Mastermind type game, where you must to guess
a 4-numbers code to deactivate the bomb. The game will return how many numbers a 4-numbers code to deactivate the bomb. The game will return how many numbers
are correct, and how many in the right position. You have 20 attempts to beat are correct, and how many in the right position. You have 20 attempts to beat
@ -171,7 +171,7 @@ public:
void lamps_w(uint8_t data); void lamps_w(uint8_t data);
void lamps_cm_w(uint8_t data); void lamps_cm_w(uint8_t data);
void sound_w(uint8_t data); void sound_w(uint8_t data);
void mux_w(uint8_t data); void mux_w(uint8_t data);
@ -524,16 +524,16 @@ static INPUT_PORTS_START(codemagik)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNUSED )
PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1") PORT_DIPNAME( 0x10, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:1")
PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2") PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:2")
PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3") PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:3")
PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4") PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW1:4")
PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) PORT_DIPSETTING( 0x80, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )

View File

@ -24,7 +24,7 @@
Model BE-7000/MBS. Model BE-7000/MBS.
https://flyers.arcade-museum.com/videogames/show/4043 https://flyers.arcade-museum.com/videogames/show/4043
https://flyers.arcade-museum.com/videogames/show/6161 https://flyers.arcade-museum.com/videogames/show/6161
Seven games in one, plus Ad message support. Seven games in one, plus Ad message support.
- Draw Poker. - Draw Poker.
@ -132,7 +132,7 @@
Books Mode: To enter Books Mode, press the BOOKS button (key 0). Books Mode: To enter Books Mode, press the BOOKS button (key 0).
In Books Mode, pressing DEAL will take you to the Percentage Mode, where you can set In Books Mode, pressing DEAL will take you to the Percentage Mode, where you can set
a percentage value (between 0 and 9) using the HOLD4 button. a percentage value (between 0 and 9) using the HOLD4 button.
While in Percentage Mode, pressing HOLD5 will bring you to the Screen RAM and Inputs Test Mode. While in Percentage Mode, pressing HOLD5 will bring you to the Screen RAM and Inputs Test Mode.
To return to normal operation, reset the machine. To return to normal operation, reset the machine.
@ -332,7 +332,7 @@
- Lot of fixes, getting Super Mini-Boy working. - Lot of fixes, getting Super Mini-Boy working.
- Added lamps support and button-lamps layout for Super Mini-Boy. - Added lamps support and button-lamps layout for Super Mini-Boy.
- Fixed the Super Mini-Boy color scheme. - Fixed the Super Mini-Boy color scheme.
- Worked Super Mini-Boy inputs and DIP Switches from the scratch. - Worked Super Mini-Boy inputs and DIP Switches from the scratch.
- Added technical and games notes. - Added technical and games notes.
- Some clean-up. - Some clean-up.
@ -342,7 +342,7 @@
- Lot of fixes and new machine driver, getting Joker Poker working. - Lot of fixes and new machine driver, getting Joker Poker working.
- Fixed crystal/clocks and derivatives. - Fixed crystal/clocks and derivatives.
- Added lamps support and button-lamps layout for Joker Poker. - Added lamps support and button-lamps layout for Joker Poker.
- Worked Super Joker Poker inputs and DIP Switches from the scratch. - Worked Super Joker Poker inputs and DIP Switches from the scratch.
- Added more technical and games notes. - Added more technical and games notes.
@ -399,7 +399,7 @@ public:
void miniboy7(machine_config &config); void miniboy7(machine_config &config);
void sminiboy(machine_config &config); void sminiboy(machine_config &config);
void bejpoker(machine_config &config); void bejpoker(machine_config &config);
void init_smini(); void init_smini();
protected: protected:
@ -578,7 +578,7 @@ uint8_t miniboy7_state::lamp_latch_r()
m_lamps[0] = BIT(data, 4); // [----x] lamp0 bet m_lamps[0] = BIT(data, 4); // [----x] lamp0 bet
m_lamps[1] = BIT(data, 3); // [---x-] lamp1 deal/draw m_lamps[1] = BIT(data, 3); // [---x-] lamp1 deal/draw
m_lamps[2] = BIT(data, 2); // [--x--] lamp2 holds m_lamps[2] = BIT(data, 2); // [--x--] lamp2 holds
m_lamps[3] = BIT(data, 1); // [-x---] lamp3 d.up+take+big+small m_lamps[3] = BIT(data, 1); // [-x---] lamp3 d.up+take+big+small
m_lamps[4] = BIT(data, 0); // [x----] lamp4 cancel m_lamps[4] = BIT(data, 0); // [x----] lamp4 cancel
machine().bookkeeping().coin_counter_w(0, data & 0x40); // counter machine().bookkeeping().coin_counter_w(0, data & 0x40); // counter
@ -620,9 +620,9 @@ uint8_t miniboy7_state::s_pia_pb_r()
case 0xfb: case 0xfb:
case 0x7b: ret = m_input[4]->read(); break; case 0x7b: ret = m_input[4]->read(); break;
case 0xfd: case 0xfd:
case 0x7d: ret = m_input[5]->read(); break; case 0x7d: ret = m_input[5]->read(); break;
case 0x7f: ret = m_dsw2->read() & 0xf0; break; // high nibble of dip switch case 0x7f: ret = m_dsw2->read() & 0xf0; break; // high nibble of dip switch
} }
return ret; return ret;
} }
@ -752,27 +752,27 @@ static INPUT_PORTS_START( sminiboy_base )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1c-4") PORT_CODE(KEYCODE_F) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1c-4") PORT_CODE(KEYCODE_F)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1c-5") PORT_CODE(KEYCODE_G) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE ) PORT_NAME("1c-5") PORT_CODE(KEYCODE_G)
PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked PORT_BIT( 0xe0, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked
PORT_START("INPUT5") // pia_pb mux 0xfb - mem 2620 PORT_START("INPUT5") // pia_pb mux 0xfb - mem 2620
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 )
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT )
PORT_BIT( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked PORT_BIT( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked
PORT_START("INPUT6") // pia_pb mux 0xfd - mem 2622 PORT_START("INPUT6") // pia_pb mux 0xfd - mem 2622
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL )
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play Bet") PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_NAME("Play Bet")
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PORT_NAME("Break_SCR") PORT_CODE(KEYCODE_E) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN ) // PORT_NAME("Break_SCR") PORT_CODE(KEYCODE_E)
PORT_BIT( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked PORT_BIT( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked
PORT_START("DSW2") PORT_START("DSW2")
// mux=0xff // mux=0xff
PORT_DIPNAME( 0x03, 0x00, "D.UP Seven" ) PORT_DIPLOCATION("DSW2:8,7") PORT_DIPNAME( 0x03, 0x00, "D.UP Seven" ) PORT_DIPLOCATION("DSW2:8,7")
PORT_DIPSETTING( 0x00, "Reset" ) PORT_DIPSETTING( 0x00, "Reset" )
PORT_DIPSETTING( 0x01, "Reset" ) PORT_DIPSETTING( 0x01, "Reset" )
PORT_DIPSETTING( 0x02, "Even" ) PORT_DIPSETTING( 0x02, "Even" )
PORT_DIPSETTING( 0x03, "Lose" ) PORT_DIPSETTING( 0x03, "Lose" )
PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW2:6") // No code to read this bit PORT_DIPNAME( 0x04, 0x04, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW2:6") // No code to read this bit
PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) )
PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW2:5") // No code to read this bit PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unused ) ) PORT_DIPLOCATION("DSW2:5") // No code to read this bit
@ -925,12 +925,12 @@ void miniboy7_state::miniboy7(machine_config &config)
void miniboy7_state::sminiboy(machine_config &config) void miniboy7_state::sminiboy(machine_config &config)
{ {
miniboy7(config); miniboy7(config);
pia6821_device &pia(PIA6821(config.replace(), "pia0")); pia6821_device &pia(PIA6821(config.replace(), "pia0"));
pia.readpa_handler().set(FUNC(miniboy7_state::s_pia_pa_r)); pia.readpa_handler().set(FUNC(miniboy7_state::s_pia_pa_r));
pia.readpb_handler().set(FUNC(miniboy7_state::s_pia_pb_r)); pia.readpb_handler().set(FUNC(miniboy7_state::s_pia_pb_r));
pia.irqa_handler().set_inputline("maincpu", 0); pia.irqa_handler().set_inputline("maincpu", 0);
pia.irqb_handler().set_inputline("maincpu", 0); pia.irqb_handler().set_inputline("maincpu", 0);
} }
void miniboy7_state::bejpoker(machine_config &config) void miniboy7_state::bejpoker(machine_config &config)
@ -1122,4 +1122,4 @@ void miniboy7_state::init_smini()
GAMEL( 1983, miniboy7, 0, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 1)", MACHINE_SUPPORTS_SAVE, layout_miniboy7 ) GAMEL( 1983, miniboy7, 0, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 1)", MACHINE_SUPPORTS_SAVE, layout_miniboy7 )
GAMEL( 1983, miniboy7a, miniboy7, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 2)", MACHINE_SUPPORTS_SAVE, layout_miniboy7 ) GAMEL( 1983, miniboy7a, miniboy7, miniboy7, miniboy7, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Mini-Boy 7 (set 2)", MACHINE_SUPPORTS_SAVE, layout_miniboy7 )
GAMEL( 1984, sminiboy, 0, sminiboy, sminiboy, miniboy7_state, init_smini, ROT0, "Bonanza Enterprises, Ltd", "Super Mini-Boy", MACHINE_SUPPORTS_SAVE, layout_sminiboy ) GAMEL( 1984, sminiboy, 0, sminiboy, sminiboy, miniboy7_state, init_smini, ROT0, "Bonanza Enterprises, Ltd", "Super Mini-Boy", MACHINE_SUPPORTS_SAVE, layout_sminiboy )
GAMEL( 1992, bejpoker, 0, bejpoker, bejpoker, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Bonanza's Joker Poker", MACHINE_SUPPORTS_SAVE, layout_bejpoker ) GAMEL( 1992, bejpoker, 0, bejpoker, bejpoker, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Bonanza's Joker Poker", MACHINE_SUPPORTS_SAVE, layout_bejpoker )

View File

@ -339,7 +339,7 @@ bool memorymoog_state::adc_comparator_on() const
if (m_selected_pot == 0) if (m_selected_pot == 0)
{ {
LOGMASKED(LOG_ADC, "Comparator: %f %f %d %04x\n", v, dac_v, comp_on, LOGMASKED(LOG_ADC, "Comparator: %f %f %d %04x\n", v, dac_v, comp_on,
m_dac_latch); m_dac_latch);
} }
return comp_on; return comp_on;
} }
@ -389,7 +389,7 @@ template<int N> u8 memorymoog_state::key_matrix_r(
if (pressed != 0xff) if (pressed != 0xff)
LOGMASKED(LOG_KEYPRESS, "Pressed %s %02X: %02X\n", name, selection, LOGMASKED(LOG_KEYPRESS, "Pressed %s %02X: %02X\n", name, selection,
pressed); pressed);
return pressed; // Returned value is active-low. return pressed; // Returned value is active-low.
} }
@ -421,7 +421,7 @@ void memorymoog_state::update_sh()
m_cv[m_selected_sh] = cv; m_cv[m_selected_sh] = cv;
// TODO: all autotune CVs are divided by a 115K-10K divider. // TODO: all autotune CVs are divided by a 115K-10K divider.
LOGMASKED(LOG_CV, "CV: %02d %-20s %04X - %f\n", m_selected_sh, LOGMASKED(LOG_CV, "CV: %02d %-20s %04X - %f\n", m_selected_sh,
CV_NAMES[m_selected_sh], m_dac_latch, cv); CV_NAMES[m_selected_sh], m_dac_latch, cv);
} }
void memorymoog_state::keyboard_w(u8 data) void memorymoog_state::keyboard_w(u8 data)

View File

@ -60,14 +60,14 @@ void namcos86_state::namcos86_palette(palette_device &palette)
bit2 = BIT(color_prom[i], 2); bit2 = BIT(color_prom[i], 2);
bit3 = BIT(color_prom[i], 3); bit3 = BIT(color_prom[i], 3);
int const r = combine_weights(rweights, bit0, bit1, bit2, bit3); int const r = combine_weights(rweights, bit0, bit1, bit2, bit3);
// green component // green component
bit0 = BIT(color_prom[i], 4); bit0 = BIT(color_prom[i], 4);
bit1 = BIT(color_prom[i], 5); bit1 = BIT(color_prom[i], 5);
bit2 = BIT(color_prom[i], 6); bit2 = BIT(color_prom[i], 6);
bit3 = BIT(color_prom[i], 7); bit3 = BIT(color_prom[i], 7);
int const g = combine_weights(gweights, bit0, bit1, bit2, bit3); int const g = combine_weights(gweights, bit0, bit1, bit2, bit3);
// blue component // blue component
bit0 = BIT(color_prom[i | 0x200], 0); bit0 = BIT(color_prom[i | 0x200], 0);
bit1 = BIT(color_prom[i | 0x200], 1); bit1 = BIT(color_prom[i | 0x200], 1);

View File

@ -134,7 +134,7 @@ struct dmx_voice_card_config
DISABLED, // 4.7K resistor connected to position 1 (+5V). DISABLED, // 4.7K resistor connected to position 1 (+5V).
ENABLED, // Jumper disconnected. ENABLED, // Jumper disconnected.
ENABLED_ON_TR12, // 4.7K resistor connected to position 2 (/Q of U1B). ENABLED_ON_TR12, // 4.7K resistor connected to position 2 (/Q of U1B).
// Decay enabled when trigger mode is 1 or 2. // Decay enabled when trigger mode is 1 or 2.
}; };
const decay_mode decay; const decay_mode decay;
@ -143,7 +143,7 @@ struct dmx_voice_card_config
{ {
ENABLED, // Jumper connected to position 2 (+5V). ENABLED, // Jumper connected to position 2 (+5V).
ENABLED_ON_TR1, // Jumper connected to position 1 (Q of U1A). ENABLED_ON_TR1, // Jumper connected to position 1 (Q of U1A).
// Early decay enabled when trigger mode is 1. // Early decay enabled when trigger mode is 1.
}; };
const early_decay_mode early_decay; const early_decay_mode early_decay;
@ -247,7 +247,7 @@ void dmx_voice_card_vca::start(int trigger_mode)
m_selected_rc_inv = 1; m_selected_rc_inv = 1;
LOGMASKED(LOG_VOLUME, "Selected gain: %f, 1/RC: %f\n", LOGMASKED(LOG_VOLUME, "Selected gain: %f, 1/RC: %f\n",
m_selected_gain, m_selected_rc_inv); m_selected_gain, m_selected_rc_inv);
} }
void dmx_voice_card_vca::decay() void dmx_voice_card_vca::decay()
@ -295,7 +295,7 @@ void dmx_voice_card_vca::sound_stream_update(sound_stream &stream, const std::ve
out.put(i, m_selected_gain * in.get(i)); out.put(i, m_selected_gain * in.get(i));
LOGMASKED(LOG_SAMPLES, "%s VCA - just gain: %f. Samples: %f, %f.\n", LOGMASKED(LOG_SAMPLES, "%s VCA - just gain: %f. Samples: %f, %f.\n",
tag(), m_selected_gain, in.get(0), in.get(n - 1)); tag(), m_selected_gain, in.get(0), in.get(n - 1));
return; return;
} }
@ -321,7 +321,7 @@ void dmx_voice_card_vca::sound_stream_update(sound_stream &stream, const std::ve
m_decay_done = true; m_decay_done = true;
LOGMASKED(LOG_SAMPLES_DECAY, "%s VCA - in decay: %f. Samples: %f, %f.\n", LOGMASKED(LOG_SAMPLES_DECAY, "%s VCA - in decay: %f. Samples: %f, %f.\n",
tag(), gain, in.get(0), in.get(n - 1)); tag(), gain, in.get(0), in.get(n - 1));
} }
void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_config &config) void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_config &config)
@ -345,7 +345,7 @@ void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_con
// For trigger mode 1. // For trigger mode 1.
m_gain.push_back((r12 * r17 * VCC + R8 * r12 * VD + R8 * r17 * VD) / m_gain.push_back((r12 * r17 * VCC + R8 * r12 * VD + R8 * r17 * VD) /
((R8 * r12 * r17) + (r12 * r17 * R9) + (R8 * r17 * R9) + (R8 * r12 * R9))); ((R8 * r12 * r17) + (r12 * r17 * R9) + (R8 * r17 * R9) + (R8 * r12 * R9)));
// For trigger mode 2. // For trigger mode 2.
m_gain.push_back((r12 * VCC + R8 * VD) / (r12 * R8 + R8 * R9 + r12 * R9)); m_gain.push_back((r12 * VCC + R8 * VD) / (r12 * R8 + R8 * R9 + r12 * R9));
// For trigger mode 3. // For trigger mode 3.
@ -354,7 +354,7 @@ void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_con
for (int i = 0; i < m_gain.size(); ++i) for (int i = 0; i < m_gain.size(); ++i)
{ {
LOGMASKED(LOG_VOLUME, "%s: Gain variation %d: %f uA, %f\n", LOGMASKED(LOG_VOLUME, "%s: Gain variation %d: %f uA, %f\n",
tag(), i, m_gain[i] * 1e6F, m_gain[i] / MAX_IREF); tag(), i, m_gain[i] * 1e6F, m_gain[i] / MAX_IREF);
m_gain[i] /= MAX_IREF; // Normalize. m_gain[i] /= MAX_IREF; // Normalize.
} }
@ -374,7 +374,7 @@ void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_con
{ {
m_decay_rc_inv.push_back(1.0F / ((R8 + r) * c3)); m_decay_rc_inv.push_back(1.0F / ((R8 + r) * c3));
LOGMASKED(LOG_VOLUME, "%s: Decay 1/RC variation %d: %f\n", LOGMASKED(LOG_VOLUME, "%s: Decay 1/RC variation %d: %f\n",
tag(), m_decay_rc_inv.size() - 1, m_decay_rc_inv.back()); tag(), m_decay_rc_inv.size() - 1, m_decay_rc_inv.back());
} }
} }
} }
@ -564,11 +564,11 @@ void dmx_voice_card::init_pitch()
// For trigger mode 1. // For trigger mode 1.
const float alpha = 1.0F + r12 / m_config.r17; const float alpha = 1.0F + r12 / m_config.r17;
m_cv.push_back((alpha * R5 + r12) * (2 * VCC - 3 * VD) / m_cv.push_back((alpha * R5 + r12) * (2 * VCC - 3 * VD) /
(3 * alpha * R5 + 3 * r12 + 2 * alpha * R_555) + VD); (3 * alpha * R5 + 3 * r12 + 2 * alpha * R_555) + VD);
// For trigger mode 2. // For trigger mode 2.
m_cv.push_back((R5 + r12) * (2 * VCC - 3 * VD) / m_cv.push_back((R5 + r12) * (2 * VCC - 3 * VD) /
(3 * R5 + 3 * r12 + 2 * R_555) + VD); (3 * R5 + 3 * r12 + 2 * R_555) + VD);
// For trigger mode 3. // For trigger mode 3.
m_cv.push_back(m_cv[0]); m_cv.push_back(m_cv[0]);
@ -636,7 +636,7 @@ void dmx_voice_card::compute_pitch_variations()
m_sample_t[i] = attotime::from_double(t_high + t_low); m_sample_t[i] = attotime::from_double(t_high + t_low);
LOGMASKED(LOG_PITCH, "%s Pitch variation %d: %f (%f, %f)\n", LOGMASKED(LOG_PITCH, "%s Pitch variation %d: %f (%f, %f)\n",
tag(), i, 1.0 / m_sample_t[i].as_double(), t_high, t_low); tag(), i, 1.0 / m_sample_t[i].as_double(), t_high, t_low);
} }
if (m_config.pitch_control) if (m_config.pitch_control)
@ -658,7 +658,7 @@ void dmx_voice_card::select_pitch()
m_timer->adjust(sampling_t, 0, sampling_t); m_timer->adjust(sampling_t, 0, sampling_t);
LOGMASKED(LOG_PITCH, "Setting sampling frequency: %f\n", LOGMASKED(LOG_PITCH, "Setting sampling frequency: %f\n",
1.0 / sampling_t.as_double()); 1.0 / sampling_t.as_double());
} }
bool dmx_voice_card::is_decay_enabled() const bool dmx_voice_card::is_decay_enabled() const
@ -723,7 +723,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dmx_voice_card::clock_callback)
if (!m_vca->in_decay() && is_decay_enabled()) if (!m_vca->in_decay() && is_decay_enabled())
{ {
if ((is_early_decay_enabled() && m_counter >= EARLY_DECAY_START) || if ((is_early_decay_enabled() && m_counter >= EARLY_DECAY_START) ||
m_counter >= LATE_DECAY_START) m_counter >= LATE_DECAY_START)
{ {
m_vca->decay(); m_vca->decay();
} }
@ -1208,7 +1208,7 @@ u8 dmx_state::cassette_r()
const u8 d7 = BIT(data, 7); // PROT* (memory protect switch. Active low). const u8 d7 = BIT(data, 7); // PROT* (memory protect switch. Active low).
return (d7 << 7) | (d6 << 6) | (d5 << 5) | (d4 << 4) | return (d7 << 7) | (d6 << 6) | (d5 << 5) | (d4 << 4) |
(d3 << 3) | (d2 << 2) | (d1 << 1) | d0; (d3 << 3) | (d2 << 2) | (d1 << 1) | d0;
} }
template<int GROUP> void dmx_state::gen_trigger_w(u8 data) template<int GROUP> void dmx_state::gen_trigger_w(u8 data)
@ -1288,7 +1288,7 @@ void dmx_state::update_voice_volume(int voice)
m_right_mixer->set_input_gain(voice, gain_right); m_right_mixer->set_input_gain(voice, gain_right);
LOGMASKED(LOG_FADERS, "Voice %d volume changed to: %d (gain L:%f, R:%f)\n", LOGMASKED(LOG_FADERS, "Voice %d volume changed to: %d (gain L:%f, R:%f)\n",
voice, pot_percent, gain_left, gain_right); voice, pot_percent, gain_left, gain_right);
} }
void dmx_state::memory_map(address_map &map) void dmx_state::memory_map(address_map &map)

View File

@ -429,7 +429,7 @@ INPUT_PORTS_START(ob8)
INPUT_PORTS_END INPUT_PORTS_END
ROM_START(ob8) ROM_START(ob8)
ROM_REGION(0X4000, MAINCPU_TAG, 0) ROM_REGION(0x4000, MAINCPU_TAG, 0)
ROM_DEFAULT_BIOS("a8") ROM_DEFAULT_BIOS("a8")
ROM_SYSTEM_BIOS(0, "a8", "OB-8 A8 OS") ROM_SYSTEM_BIOS(0, "a8", "OB-8 A8 OS")

View File

@ -793,7 +793,7 @@ CONS( 2018, ra145, 0, 0, megadriv_ra145_ntsc, msi_6button,
// Technically this is a MD type cartridge, but it doesn't seem to be designed for use with a standard MD as it contains // Technically this is a MD type cartridge, but it doesn't seem to be designed for use with a standard MD as it contains
// nothing but the 16Mbyte ROM and a 5v to 3.3v converter yet the code clearly requires some extensive banking logic. // nothing but the 16Mbyte ROM and a 5v to 3.3v converter yet the code clearly requires some extensive banking logic.
// Testing it on a real MD shows nothing, not even the menu. // Testing it on a real MD shows nothing, not even the menu.
// //
// We don't seem to emulate the system it's designed for, so for now just treat it as its own thing (which may become // We don't seem to emulate the system it's designed for, so for now just treat it as its own thing (which may become
// the basis of a driver for that console) // the basis of a driver for that console)
CONS( 2012, atgame40, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "AtGames", "40 Bonus Games in 1 (AtGames)", MACHINE_NOT_WORKING) CONS( 2012, atgame40, 0, 0, megadriv_radica_3button_pal, radica_3button, megadriv_radica_state, init_megadrie, "AtGames", "40 Bonus Games in 1 (AtGames)", MACHINE_NOT_WORKING)

View File

@ -215,10 +215,10 @@ CONS(2015, bkrankp, 0, 0, generalplus_gpspispi_bkrankp, gcm394, generalplus_gps
// This can be found listed as a ZHISHAN / Aojiao / Bornkid 32 Bit Preloaded 139-in-1 Handheld Game Console // This can be found listed as a ZHISHAN / Aojiao / Bornkid 32 Bit Preloaded 139-in-1 Handheld Game Console
// but these just seem to be brands, manufacturer is unknown. // but these just seem to be brands, manufacturer is unknown.
// Various case styles are available, the unit here was styled after a Nintendo Switch // Various case styles are available, the unit here was styled after a Nintendo Switch
// //
// Architecture is unknown, it contains many of the games in beijuehh / bornkidh (generalplus_gpl16250_rom.cpp) // Architecture is unknown, it contains many of the games in beijuehh / bornkidh (generalplus_gpl16250_rom.cpp)
// but is running from SPI flash and has 'Loading' screens between menus and after selecting a game. // but is running from SPI flash and has 'Loading' screens between menus and after selecting a game.
// //
// While those are GeneralPlus based platforms, it's possible the games were ported to something else, the SPI // While those are GeneralPlus based platforms, it's possible the games were ported to something else, the SPI
// appears to contain a filesystem, but data looks to be compressed / encrypted with no obvious code. // appears to contain a filesystem, but data looks to be compressed / encrypted with no obvious code.
// There is no GPspi header in the SPI ROM. // There is no GPspi header in the SPI ROM.

View File

@ -488,7 +488,7 @@ INPUT_PORTS_END
static INPUT_PORTS_START( epo_tetr ) // all inputs verified against hidden test mode static INPUT_PORTS_START( epo_tetr ) // all inputs verified against hidden test mode
PORT_INCLUDE( spg2xx ) PORT_INCLUDE( spg2xx )
PORT_MODIFY("P1") PORT_MODIFY("P1")
PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP )
PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN )
PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT )
@ -2731,12 +2731,12 @@ CONS( 2008, ddr33v, 0, 0, spg2xx, ddr33v, spg2xx_game_ddr33v_st
CONS( 2006, anpantv, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "Bandai", "Anpanman TV (Japan)", MACHINE_NOT_WORKING ) CONS( 2006, anpantv, 0, 0, spg2xx, spg2xx, spg2xx_game_state, empty_init, "Bandai", "Anpanman TV (Japan)", MACHINE_NOT_WORKING )
// Has an AT24C08, not currently hooked up (probably for storing database unlocks) // Has an AT24C08, not currently hooked up (probably for storing database unlocks)
// //
// There is also a card reader/scanner which can read barcodes from Digimon cards // There is also a card reader/scanner which can read barcodes from Digimon cards
// and IR connectivity which allowed for data exchange with various services using // and IR connectivity which allowed for data exchange with various services using
// an external device, including transfering characters to/from an arcade game. // an external device, including transfering characters to/from an arcade game.
// Neither is currently emulated // Neither is currently emulated
// //
// Will report 'ERROR' sometimes, maybe as a result of these not being hooked up. // Will report 'ERROR' sometimes, maybe as a result of these not being hooked up.
CONS( 2006, dmbtjunc, 0, 0, spg2xx, dmbtjunc, spg2xx_game_state, empty_init, "Bandai", "Let's! TV Play Digital Monster Battle Junction (Japan)", MACHINE_NOT_WORKING ) CONS( 2006, dmbtjunc, 0, 0, spg2xx, dmbtjunc, spg2xx_game_state, empty_init, "Bandai", "Let's! TV Play Digital Monster Battle Junction (Japan)", MACHINE_NOT_WORKING )

View File

@ -62,15 +62,15 @@
2005 Let's!TVプレイ / / Let's! TV Play Dragon Ball Z Battle Taikan Kamehameha~ Omee to Fusion / Bandai / Japan 2005 Let's!TVプレイ / / Let's! TV Play Dragon Ball Z Battle Taikan Kamehameha~ Omee to Fusion / Bandai / Japan
dumped: either here, xavix_2000.cpp, or xavix_2002.cpp dumped: either here, xavix_2000.cpp, or xavix_2002.cpp
Let's!TVプレイ / / Let's! TV Play Taikan Cast Off Kamen Rider Kabuto Clock Up & Rider Kick / Bandai / Japan Let's!TVプレイ / / Let's! TV Play Taikan Cast Off Kamen Rider Kabuto Clock Up & Rider Kick / Bandai / Japan
Let's!TVプレイ / / Let's! TV Play Narikiri Taikan Boukenger Hashire! Ute! Mission Start!! / Bandai / Japan Let's!TVプレイ / / Let's! TV Play Narikiri Taikan Boukenger Hashire! Ute! Mission Start!! / Bandai / Japan
Webdiver Gradion /TAKARA/Japan - - - - - - - Webdiver Gradion /TAKARA/Japan - - - - - - -
Let's!TVプレイ / / Let's! TV Play Mahou Taiketsu Magiranger - Magimat de Dance & Battle / Bandai / Japan Let's!TVプレイ / / Let's! TV Play Mahou Taiketsu Magiranger - Magimat de Dance & Battle / Bandai / Japan
anpan-man pyon-pyon ikunou mat /JoyPalette/Japan - - - - - - - anpan-man pyon-pyon ikunou mat /JoyPalette/Japan - - - - - - -
DX体感 / / Doko Demo Doraemon Nihon Ryokou Game DX Taikan! Doko Dora Grand Prix! / Epoch / Japan DX体感 / / Doko Demo Doraemon Nihon Ryokou Game DX Taikan! Doko Dora Grand Prix! / Epoch / Japan
Let's!TVプレイ MaxHeart MaxHeartにおどっちゃおう / / Let's! TV Play Futari wa PreCure - MaxHeart Mat de Dance MaxHeart ni Odotchaou / Bandai / Japan Let's!TVプレイ MaxHeart MaxHeartにおどっちゃおう / / Let's! TV Play Futari wa PreCure - MaxHeart Mat de Dance MaxHeart ni Odotchaou / Bandai / Japan
anpan-man kazoku de ikunou mat DX /JoyPalette/Japan - - - - - - - anpan-man kazoku de ikunou mat DX /JoyPalette/Japan - - - - - - -
Excite Striker (UK) Excite Striker (UK)
connecTV OPUS /RADICA EU (different ROM to US?) connecTV OPUS /RADICA EU (different ROM to US?)
Let's!TVプレイ / / (Let's! TV Play Ongeki Battle! Kamen Rider Hibiki - Kimero! Ikki Kasei no Kata / Bandai / Japan) Let's!TVプレイ / / (Let's! TV Play Ongeki Battle! Kamen Rider Hibiki - Kimero! Ikki Kasei no Kata / Bandai / Japan)
Let's construct the town! /TAKARA/Japan - - - - - - - Let's construct the town! /TAKARA/Japan - - - - - - -
@ -311,13 +311,13 @@ void xavix_state::mainram_w(offs_t offset, uint8_t data)
{ {
m_mainram[offset] = data; m_mainram[offset] = data;
/* /*
// trying to debug anpanmdx title screen issue // trying to debug anpanmdx title screen issue
if ((offset == 0x3d) && (data == 0x77)) if ((offset == 0x3d) && (data == 0x77))
logerror("%s: writing 0x77 to 0x3d\n", machine().describe_context()); logerror("%s: writing 0x77 to 0x3d\n", machine().describe_context());
if ((offset == 0x98) && (data == 0x77)) if ((offset == 0x98) && (data == 0x77))
logerror("%s: writing 0x77 to 0x98\n", machine().describe_context()); logerror("%s: writing 0x77 to 0x98\n", machine().describe_context());
if ((offset == 0x3f2) && (data == 0x77)) if ((offset == 0x3f2) && (data == 0x77))
logerror("%s: writing 0x77 to 0x3f2\n", machine().describe_context()); logerror("%s: writing 0x77 to 0x3f2\n", machine().describe_context());
// but the unwanted? value of 0x77 is explicitly set by the code at 1c61c // but the unwanted? value of 0x77 is explicitly set by the code at 1c61c
*/ */
} }

View File

@ -773,7 +773,7 @@ ROM_START( epo_ntpj )
// uses IS24C64 EEPROM // uses IS24C64 EEPROM
// there is extra hardware for the Piano side of things which may or may not have ROM data in it // there is extra hardware for the Piano side of things which may or may not have ROM data in it
ROM_END ROM_END
ROM_START( doradraw ) ROM_START( doradraw )
@ -858,7 +858,7 @@ CONS( 2004, epo_tfit, 0, 0, superxavix_i2c_24c04_4mb, epo_tfit, superxavix_
// 石川遼 エキサイトゴルフ // 石川遼 エキサイトゴルフ
CONS( 2010, epo_rgfj, 0, 0, superxavix_i2c_24c08, xavix_i2c, superxavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Ishikawa Ryou Excite Golf (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND ) CONS( 2010, epo_rgfj, 0, 0, superxavix_i2c_24c08, xavix_i2c, superxavix_i2c_state, init_xavix, "Epoch / SSD Company LTD", "Ishikawa Ryou Excite Golf (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_GRAPHICS | MACHINE_IMPERFECT_SOUND )
// Let's!TVプレイ ふたりはプリキュアMaxHeart マットでダンス MaxHeartにおどっちゃおう // Let's!TVプレイ ふたりはプリキュアMaxHeart マットでダンス MaxHeartにおどっちゃおう
CONS( 2004, maxheart, 0, 0, superxavix_i2c_24c04_4mb, xavix_i2c, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Futari wa PreCure MaxHeart Mat de Dance MaxHeart ni Odotchaou (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND ) CONS( 2004, maxheart, 0, 0, superxavix_i2c_24c04_4mb, xavix_i2c, superxavix_i2c_state, init_xavix, "Bandai / SSD Company LTD", "Let's! TV Play Futari wa PreCure MaxHeart Mat de Dance MaxHeart ni Odotchaou (Japan)", MACHINE_NOT_WORKING | MACHINE_IMPERFECT_SOUND )
// どこでもドラえもん 日本旅行ゲームDX体感どこドラグランプリ // どこでもドラえもん 日本旅行ゲームDX体感どこドラグランプリ

View File

@ -28,7 +28,7 @@ void juku_mouse_device::device_start()
save_item(NAME(m_prev_mouse_y)); save_item(NAME(m_prev_mouse_y));
save_item(NAME(m_prev_mouse_x)); save_item(NAME(m_prev_mouse_x));
save_item(NAME(m_prev_byte)); save_item(NAME(m_prev_byte));
m_mouse_timer = timer_alloc(FUNC(juku_mouse_device::poll_delta), this); m_mouse_timer = timer_alloc(FUNC(juku_mouse_device::poll_delta), this);
} }
void juku_mouse_device::device_reset() void juku_mouse_device::device_reset()
@ -75,7 +75,7 @@ static INPUT_PORTS_START( juku_mouse )
PORT_START("MOUSE_Y") PORT_START("MOUSE_Y")
PORT_BIT(0xff, 0x00, IPT_MOUSE_Y) PORT_CODE(MOUSECODE_Y) PORT_SENSITIVITY(23) PORT_BIT(0xff, 0x00, IPT_MOUSE_Y) PORT_CODE(MOUSECODE_Y) PORT_SENSITIVITY(23)
PORT_START("BUTTONS") PORT_START("BUTTONS")
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Left Button") PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_BUTTON1) PORT_CODE(MOUSECODE_BUTTON1) PORT_NAME("Left Button")
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Right Button") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_BUTTON2) PORT_CODE(MOUSECODE_BUTTON2) PORT_NAME("Right Button")

View File

@ -26,7 +26,7 @@ private:
required_ioport m_mouse_x, m_mouse_y, m_mouse_b; required_ioport m_mouse_x, m_mouse_y, m_mouse_b;
uint8_t m_prev_mouse_x, m_prev_mouse_y; uint8_t m_prev_mouse_x, m_prev_mouse_y;
uint8_t m_prev_byte; uint8_t m_prev_byte;
devcb_write_line m_int_handler; devcb_write_line m_int_handler;
emu_timer *m_mouse_timer; emu_timer *m_mouse_timer;
}; };