From 587598e61871f198155fe21463435716e5fb35a9 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 26 Jan 2025 05:59:56 +1100 Subject: [PATCH] srcclean and manual cleanup --- hash/amigaocs_flop.xml | 8 +- hash/cd32.xml | 2 +- hash/jaguar.xml | 4 +- hash/juku.xml | 2 +- hash/megacd.xml | 4 +- hash/super_tv_pc_cart.xml | 2 +- hash/zx81_cass.xml | 2 +- scripts/src/formats.lua | 8 +- src/devices/cpu/mcs51/mcs51.cpp | 12 +- src/devices/machine/spg110.cpp | 16 +- src/devices/machine/spg110_video.cpp | 10 +- src/devices/machine/spg_renderer.cpp | 6 +- src/devices/sound/roland_sa.cpp | 649 +++++++++--------- src/devices/sound/roland_sa.h | 65 +- src/devices/sound/upd931.cpp | 14 +- src/lib/formats/h17disk.cpp | 2 +- src/mame/amiga/amiga_m.cpp | 12 +- src/mame/bfm/bfcobra.cpp | 2 +- src/mame/casio/ct8000.cpp | 48 +- src/mame/casio/ct8000_midi.cpp | 94 +-- src/mame/kaneko/snowbros.cpp | 2 +- src/mame/konami/asterix.cpp | 2 +- src/mame/layout/bejpoker.lay | 8 +- src/mame/layout/codemagik.lay | 4 +- src/mame/layout/ct8000.lay | 48 +- src/mame/layout/ctfk1.lay | 38 +- src/mame/layout/goldnpkr.lay | 2 +- src/mame/layout/goldnswp.lay | 2 +- src/mame/layout/sminiboy.lay | 6 +- src/mame/midway/wmg.cpp | 4 +- src/mame/misc/goldnpkr.cpp | 12 +- src/mame/misc/lependu.cpp | 16 +- src/mame/misc/miniboy7.cpp | 32 +- src/mame/moog/memorymoog.cpp | 6 +- src/mame/namco/namcos86_v.cpp | 4 +- src/mame/oberheim/dmx.cpp | 30 +- src/mame/oberheim/ob8.cpp | 2 +- src/mame/sega/megadriv_rad.cpp | 2 +- src/mame/tvgames/generalplus_gpl16250_spi.cpp | 4 +- src/mame/tvgames/spg2xx.cpp | 6 +- src/mame/tvgames/xavix.cpp | 30 +- src/mame/tvgames/xavix_2002.cpp | 4 +- src/mame/ussr/jukumouse.cpp | 4 +- src/mame/ussr/jukumouse.h | 2 +- 44 files changed, 605 insertions(+), 627 deletions(-) diff --git a/hash/amigaocs_flop.xml b/hash/amigaocs_flop.xml index 01802e070c6..5b94b893be2 100644 --- a/hash/amigaocs_flop.xml +++ b/hash/amigaocs_flop.xml @@ -7983,7 +7983,7 @@ ATK test: OK - + @@ -12097,7 +12097,7 @@ ATK test: OK - + Crazy Cars II (Europe) @@ -12156,7 +12156,7 @@ ATK test: C:79 H:U 1 Sector Bad - + Crazy Sue... Goes On (Europe) @@ -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? ATK test: C:43 onward Bad ]]> - + diff --git a/hash/cd32.xml b/hash/cd32.xml index b5bdf7d0823..f8eccec05e4 100644 --- a/hash/cd32.xml +++ b/hash/cd32.xml @@ -731,7 +731,7 @@ license:CC0-1.0 Brutal Sports Series: Football 1994 Millennium - + diff --git a/hash/jaguar.xml b/hash/jaguar.xml index 3568fc6585f..78255f804bd 100644 --- a/hash/jaguar.xml +++ b/hash/jaguar.xml @@ -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 Rightmost column of gameplay has odd "overscan" area ]]> - - + + diff --git a/hash/juku.xml b/hash/juku.xml index beca0332ae6..8e178fc5002 100644 --- a/hash/juku.xml +++ b/hash/juku.xml @@ -90,7 +90,7 @@ license:CC0-1.0 - + diff --git a/hash/megacd.xml b/hash/megacd.xml index a50e54c1937..5471c83e4ab 100644 --- a/hash/megacd.xml +++ b/hash/megacd.xml @@ -16443,7 +16443,7 @@ Black screen, requires sub CPU to be overclocked by 1.5x Music from the Sega CD Games - Jurassic Park, Batman Returns (USA) 1993 Sega Multimedia Studio - + @@ -16462,7 +16462,7 @@ Black screen, requires sub CPU to be overclocked by 1.5x The Smurfs (USA, Prototype) 2014 Good Deal Games - + diff --git a/hash/super_tv_pc_cart.xml b/hash/super_tv_pc_cart.xml index 1c3d31e1802..0aa0c5d7292 100644 --- a/hash/super_tv_pc_cart.xml +++ b/hash/super_tv_pc_cart.xml @@ -54,7 +54,7 @@ license:CC0-1.0 - + diff --git a/hash/zx81_cass.xml b/hash/zx81_cass.xml index b0b955b09f7..d75701fcbc0 100644 --- a/hash/zx81_cass.xml +++ b/hash/zx81_cass.xml @@ -4325,7 +4325,7 @@ RAND USR 16530 - + Inventions 1 1982 diff --git a/scripts/src/formats.lua b/scripts/src/formats.lua index bf1086cb13a..58cbb979bb3 100644 --- a/scripts/src/formats.lua +++ b/scripts/src/formats.lua @@ -1056,10 +1056,10 @@ end -------------------------------------------------- if opt_tool(FORMATS, "H17D_DSK") then - files { - MAME_DIR.. "src/lib/formats/h17disk.cpp", - MAME_DIR.. "src/lib/formats/h17disk.h", - } + files { + MAME_DIR.. "src/lib/formats/h17disk.cpp", + MAME_DIR.. "src/lib/formats/h17disk.h", + } end -------------------------------------------------- diff --git a/src/devices/cpu/mcs51/mcs51.cpp b/src/devices/cpu/mcs51/mcs51.cpp index cacd3a2c2d6..5c0e9034f6d 100644 --- a/src/devices/cpu/mcs51/mcs51.cpp +++ b/src/devices/cpu/mcs51/mcs51.cpp @@ -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: - PES = 0: + PES = 0: 0x00000-0x0ffff -> data memory on the expanded bus 0x10000-0x1ffff -> data memory on the byte-wide bus - PES = 1: - 0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus + PES = 1: + 0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus 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) - PES = 1: - 0x20000-0x2ffff -> memory-mapped peripherals on the byte-wide bus + PES = 1: + 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) diff --git a/src/devices/machine/spg110.cpp b/src/devices/machine/spg110.cpp index 78f0cb5d6ec..6afa6e8a4d3 100644 --- a/src/devices/machine/spg110.cpp +++ b/src/devices/machine/spg110.cpp @@ -73,12 +73,12 @@ void spg110_device::ffreq2_w(int state) } // notes about IRQ differences from 2xx -// +// // TMB1 / TMB2 are IRQ7 (same as SPG2xx) // Key Change is IRQ4 (was 7 on SPG2xx) // LVD (Low Voltage Reset) is IRQ6 (doesn't exist on SPG2xx?) // ADC is IRQ1 (was 3 on SPG2xx) -// +// // on SPG2xx 0x3D2E can redirect any other interrupt to the FIQ // 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) map(0x002039, 0x002039).w(m_spg_video, FUNC(spg110_video_device::effect_control_2039_w)); // P_Effect_control // 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(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 // 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? @@ -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(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(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(0x002066, 0x002066).w(m_spg_video, FUNC(spg110_video_device::dma_source_2066_w)); // P_DMA_Source_adr + 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(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 diff --git a/src/devices/machine/spg110_video.cpp b/src/devices/machine/spg110_video.cpp index 60c2e642fd6..6751cdad498 100644 --- a/src/devices/machine/spg110_video.cpp +++ b/src/devices/machine/spg110_video.cpp @@ -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 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 // should this return the *current* horizontal position? or the register value written? return m_screen->hpos(); -} +} 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 logerror("%s: effect_control_2039_w: %04x\n", machine().describe_context(), data); -} +} void spg110_video_device::huereference_203c_w(uint16_t data) { // 0006 on startup, twice logerror("%s: huereference_203c_w: %04x\n", machine().describe_context(), 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. logerror("%s: sp_control_2042_w: %04x\n", machine().describe_context(), data); -} +} void spg110_video_device::spg110_2045_w(uint16_t data) { diff --git a/src/devices/machine/spg_renderer.cpp b/src/devices/machine/spg_renderer.cpp index 7e02154d798..b1dcd7d46b8 100644 --- a/src/devices/machine/spg_renderer.cpp +++ b/src/devices/machine/spg_renderer.cpp @@ -256,7 +256,7 @@ void spg_renderer_device::draw_linemap(bool has_extended_tilemaps, const rectang uint32_t palette_map = tilemapregs[3]; //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 yscroll = scrollregs[1]; @@ -309,11 +309,11 @@ void spg_renderer_device::draw_linemap(bool has_extended_tilemaps, const rectang { bits <<= nc_bpp; if (nbits < nc_bpp) - { + { uint16_t b = spc.read_word(sourcebase++ & 0x3fffff); b = (b << 8) | (b >> 8); bits |= b << (nc_bpp - nbits); - nbits += 16; + nbits += 16; } nbits -= nc_bpp; diff --git a/src/devices/sound/roland_sa.cpp b/src/devices/sound/roland_sa.cpp index 912e18a8127..9802d371368 100644 --- a/src/devices/sound/roland_sa.cpp +++ b/src/devices/sound/roland_sa.cpp @@ -24,407 +24,388 @@ #include "emu.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 -const uint32_t roland_sa_device::env_table[] = { - 0x000000, 0x000023, 0x000026, 0x000029, 0x00002d, 0x000031, 0x000036, - 0x00003b, 0x000040, 0x000046, 0x00004c, 0x000052, 0x00005a, 0x000062, - 0x00006c, 0x000076, 0x000080, 0x00008c, 0x000098, 0x0000a4, 0x0000b4, - 0x0000c4, 0x0000d8, 0x0000ec, 0x000104, 0x00011c, 0x000134, 0x00014c, - 0x00016c, 0x00018c, 0x0001b4, 0x0001dc, 0x000200, 0x000230, 0x000260, - 0x000290, 0x0002d0, 0x000310, 0x000360, 0x0003b0, 0x000400, 0x000460, - 0x0004c0, 0x000520, 0x0005a0, 0x000620, 0x0006c0, 0x000760, 0x000800, - 0x0008c0, 0x000980, 0x000a40, 0x000b40, 0x000c40, 0x000d80, 0x000ec0, - 0x001000, 0x001180, 0x001300, 0x001480, 0x001680, 0x001880, 0x001b00, - 0x001d80, 0x002000, 0x002300, 0x002600, 0x002900, 0x002d00, 0x003100, - 0x003600, 0x003b00, 0x004000, 0x004600, 0x004c00, 0x005200, 0x005a00, - 0x006200, 0x006c00, 0x007600, 0x008000, 0x008c00, 0x009800, 0x00a400, - 0x00b400, 0x00c400, 0x00d800, 0x00ec00, 0x010000, 0x011800, 0x013000, - 0x014800, 0x016800, 0x018800, 0x01b000, 0x01d800, 0x020000, 0x023000, - 0x026000, 0x029000, 0x02d000, 0x031000, 0x036000, 0x03b000, 0x040000, - 0x046000, 0x04c000, 0x052000, 0x05a000, 0x062000, 0x06c000, 0x076000, - 0x080000, 0x08c000, 0x098000, 0x0a4000, 0x0b4000, 0x0c4000, 0x0d8000, - 0x0ec000, 0x100000, 0x118000, 0x130000, 0x148000, 0x168000, 0x188000, - 0x1b0000, 0x1d8000, 0x000000, 0x1fffdc, 0x1fffd9, 0x1fffd6, 0x1fffd2, - 0x1fffce, 0x1fffc9, 0x1fffc4, 0x1fffbf, 0x1fffb9, 0x1fffb3, 0x1fffad, - 0x1fffa5, 0x1fff9d, 0x1fff93, 0x1fff89, 0x1fff7f, 0x1fff73, 0x1fff67, - 0x1fff5b, 0x1fff4b, 0x1fff3b, 0x1fff27, 0x1fff13, 0x1ffefb, 0x1ffee3, - 0x1ffecb, 0x1ffeb3, 0x1ffe93, 0x1ffe73, 0x1ffe4b, 0x1ffe23, 0x1ffdff, - 0x1ffdcf, 0x1ffd9f, 0x1ffd6f, 0x1ffd2f, 0x1ffcef, 0x1ffc9f, 0x1ffc4f, - 0x1ffbff, 0x1ffb9f, 0x1ffb3f, 0x1ffadf, 0x1ffa5f, 0x1ff9df, 0x1ff93f, - 0x1ff89f, 0x1ff7ff, 0x1ff73f, 0x1ff67f, 0x1ff5bf, 0x1ff4bf, 0x1ff3bf, - 0x1ff27f, 0x1ff13f, 0x1fefff, 0x1fee7f, 0x1fecff, 0x1feb7f, 0x1fe97f, - 0x1fe77f, 0x1fe4ff, 0x1fe27f, 0x1fdfff, 0x1fdcff, 0x1fd9ff, 0x1fd6ff, - 0x1fd2ff, 0x1fceff, 0x1fc9ff, 0x1fc4ff, 0x1fbfff, 0x1fb9ff, 0x1fb3ff, - 0x1fadff, 0x1fa5ff, 0x1f9dff, 0x1f93ff, 0x1f89ff, 0x1f7fff, 0x1f73ff, - 0x1f67ff, 0x1f5bff, 0x1f4bff, 0x1f3bff, 0x1f27ff, 0x1f13ff, 0x1effff, - 0x1ee7ff, 0x1ecfff, 0x1eb7ff, 0x1e97ff, 0x1e77ff, 0x1e4fff, 0x1e27ff, - 0x1dffff, 0x1dcfff, 0x1d9fff, 0x1d6fff, 0x1d2fff, 0x1cefff, 0x1c9fff, - 0x1c4fff, 0x1bffff, 0x1b9fff, 0x1b3fff, 0x1adfff, 0x1a5fff, 0x19dfff, - 0x193fff, 0x189fff, 0x17ffff, 0x173fff, 0x167fff, 0x15bfff, 0x14bfff, - 0x13bfff, 0x127fff, 0x113fff, 0x0fffff, 0x0e7fff, 0x0cffff, 0x0b7fff, - 0x097fff, 0x077fff, 0x04ffff, 0x027fff}; +const uint32_t env_table[] = { + 0x000000, 0x000023, 0x000026, 0x000029, 0x00002d, 0x000031, 0x000036, + 0x00003b, 0x000040, 0x000046, 0x00004c, 0x000052, 0x00005a, 0x000062, + 0x00006c, 0x000076, 0x000080, 0x00008c, 0x000098, 0x0000a4, 0x0000b4, + 0x0000c4, 0x0000d8, 0x0000ec, 0x000104, 0x00011c, 0x000134, 0x00014c, + 0x00016c, 0x00018c, 0x0001b4, 0x0001dc, 0x000200, 0x000230, 0x000260, + 0x000290, 0x0002d0, 0x000310, 0x000360, 0x0003b0, 0x000400, 0x000460, + 0x0004c0, 0x000520, 0x0005a0, 0x000620, 0x0006c0, 0x000760, 0x000800, + 0x0008c0, 0x000980, 0x000a40, 0x000b40, 0x000c40, 0x000d80, 0x000ec0, + 0x001000, 0x001180, 0x001300, 0x001480, 0x001680, 0x001880, 0x001b00, + 0x001d80, 0x002000, 0x002300, 0x002600, 0x002900, 0x002d00, 0x003100, + 0x003600, 0x003b00, 0x004000, 0x004600, 0x004c00, 0x005200, 0x005a00, + 0x006200, 0x006c00, 0x007600, 0x008000, 0x008c00, 0x009800, 0x00a400, + 0x00b400, 0x00c400, 0x00d800, 0x00ec00, 0x010000, 0x011800, 0x013000, + 0x014800, 0x016800, 0x018800, 0x01b000, 0x01d800, 0x020000, 0x023000, + 0x026000, 0x029000, 0x02d000, 0x031000, 0x036000, 0x03b000, 0x040000, + 0x046000, 0x04c000, 0x052000, 0x05a000, 0x062000, 0x06c000, 0x076000, + 0x080000, 0x08c000, 0x098000, 0x0a4000, 0x0b4000, 0x0c4000, 0x0d8000, + 0x0ec000, 0x100000, 0x118000, 0x130000, 0x148000, 0x168000, 0x188000, + 0x1b0000, 0x1d8000, 0x000000, 0x1fffdc, 0x1fffd9, 0x1fffd6, 0x1fffd2, + 0x1fffce, 0x1fffc9, 0x1fffc4, 0x1fffbf, 0x1fffb9, 0x1fffb3, 0x1fffad, + 0x1fffa5, 0x1fff9d, 0x1fff93, 0x1fff89, 0x1fff7f, 0x1fff73, 0x1fff67, + 0x1fff5b, 0x1fff4b, 0x1fff3b, 0x1fff27, 0x1fff13, 0x1ffefb, 0x1ffee3, + 0x1ffecb, 0x1ffeb3, 0x1ffe93, 0x1ffe73, 0x1ffe4b, 0x1ffe23, 0x1ffdff, + 0x1ffdcf, 0x1ffd9f, 0x1ffd6f, 0x1ffd2f, 0x1ffcef, 0x1ffc9f, 0x1ffc4f, + 0x1ffbff, 0x1ffb9f, 0x1ffb3f, 0x1ffadf, 0x1ffa5f, 0x1ff9df, 0x1ff93f, + 0x1ff89f, 0x1ff7ff, 0x1ff73f, 0x1ff67f, 0x1ff5bf, 0x1ff4bf, 0x1ff3bf, + 0x1ff27f, 0x1ff13f, 0x1fefff, 0x1fee7f, 0x1fecff, 0x1feb7f, 0x1fe97f, + 0x1fe77f, 0x1fe4ff, 0x1fe27f, 0x1fdfff, 0x1fdcff, 0x1fd9ff, 0x1fd6ff, + 0x1fd2ff, 0x1fceff, 0x1fc9ff, 0x1fc4ff, 0x1fbfff, 0x1fb9ff, 0x1fb3ff, + 0x1fadff, 0x1fa5ff, 0x1f9dff, 0x1f93ff, 0x1f89ff, 0x1f7fff, 0x1f73ff, + 0x1f67ff, 0x1f5bff, 0x1f4bff, 0x1f3bff, 0x1f27ff, 0x1f13ff, 0x1effff, + 0x1ee7ff, 0x1ecfff, 0x1eb7ff, 0x1e97ff, 0x1e77ff, 0x1e4fff, 0x1e27ff, + 0x1dffff, 0x1dcfff, 0x1d9fff, 0x1d6fff, 0x1d2fff, 0x1cefff, 0x1c9fff, + 0x1c4fff, 0x1bffff, 0x1b9fff, 0x1b3fff, 0x1adfff, 0x1a5fff, 0x19dfff, + 0x193fff, 0x189fff, 0x17ffff, 0x173fff, 0x167fff, 0x15bfff, 0x14bfff, + 0x13bfff, 0x127fff, 0x113fff, 0x0fffff, 0x0e7fff, 0x0cffff, 0x0b7fff, + 0x097fff, 0x077fff, 0x04ffff, 0x027fff}; // 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, - 0x020, 0x01b, 0x016, 0x011, 0x00d, 0x00a, 0x006, 0x003}; +const uint16_t addr_table[] = {0x1e0, 0x080, 0x060, 0x04d, 0x040, 0x036, 0x02d, 0x026, + 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) - : device_t(mconfig, ROLAND_SA, tag, owner, clock) - , device_sound_interface(mconfig, *this) - , m_int_callback(*this) - , m_stream(nullptr) + : device_t(mconfig, ROLAND_SA, tag, owner, clock) + , device_sound_interface(mconfig, *this) + , m_int_callback(*this) + , m_stream(nullptr) { } 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() { - m_int_callback(CLEAR_LINE); + m_int_callback(CLEAR_LINE); - m_irq_id = 0; - m_irq_triggered = false; - memset(m_parts, 0, sizeof(m_parts)); + m_irq_id = 0; + m_irq_triggered = false; + memset(m_parts, 0, sizeof(m_parts)); } void roland_sa_device::set_sr_mode(bool mode) { - if (m_sr_mode != mode) - m_stream->set_sample_rate(mode ? 20000 : 32000); - m_sr_mode = mode; + if (m_sr_mode != mode) + m_stream->set_sample_rate(mode ? 20000 : 32000); + m_sr_mode = mode; } void roland_sa_device::load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7) { - // 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 - for (size_t i = 0; i < 0x10000; i++) - { - // ROM IC11 - uint16_t r11_pos = i % 4096; - uint16_t r11 = (uint16_t)round(exp2f(13.0 + r11_pos / 4096.0) - 4096 * 2); - bool r11_12 = !((r11 >> 12) & 1); - bool r11_11 = !((r11 >> 11) & 1); - bool r11_10 = !((r11 >> 10) & 1); - bool r11_9 = !((r11 >> 9) & 1); - bool r11_8 = !((r11 >> 8) & 1); - bool r11_7 = !((r11 >> 7) & 1); - bool r11_6 = !((r11 >> 6) & 1); - bool r11_5 = !((r11 >> 5) & 1); - bool r11_4 = (r11 >> 4) & 1; - bool r11_3 = (r11 >> 3) & 1; - bool r11_2 = (r11 >> 2) & 1; - bool r11_1 = (r11 >> 1) & 1; - bool r11_0 = (r11 >> 0) & 1; + // 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 + for (size_t i = 0; i < 0x10000; i++) + { + // ROM IC11 + uint16_t r11_pos = i % 4096; + uint16_t r11 = (uint16_t)round(exp2f(13.0 + r11_pos / 4096.0) - 4096 * 2); + bool r11_12 = !((r11 >> 12) & 1); + bool r11_11 = !((r11 >> 11) & 1); + bool r11_10 = !((r11 >> 10) & 1); + bool r11_9 = !((r11 >> 9) & 1); + bool r11_8 = !((r11 >> 8) & 1); + bool r11_7 = !((r11 >> 7) & 1); + bool r11_6 = !((r11 >> 6) & 1); + bool r11_5 = !((r11 >> 5) & 1); + bool r11_4 = (r11 >> 4) & 1; + bool r11_3 = (r11 >> 3) & 1; + bool r11_2 = (r11 >> 2) & 1; + bool r11_1 = (r11 >> 1) & 1; + bool r11_0 = (r11 >> 0) & 1; - uint8_t param_bus_0 = ((i / 0x1000) >> 0) & 1; - uint8_t param_bus_1 = ((i / 0x1000) >> 1) & 1; - uint8_t param_bus_2 = ((i / 0x1000) >> 2) & 1; - uint8_t param_bus_3 = ((i / 0x1000) >> 3) & 1; + uint8_t param_bus_0 = ((i / 0x1000) >> 0) & 1; + uint8_t param_bus_1 = ((i / 0x1000) >> 1) & 1; + uint8_t param_bus_2 = ((i / 0x1000) >> 2) & 1; + uint8_t param_bus_3 = ((i / 0x1000) >> 3) & 1; - // 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_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_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_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_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_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_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_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_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_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; - - 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; - } + // 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_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_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_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_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_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_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_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_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_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; - // Exp table to decode samples - // 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 < 0x8000; i++) - { - // 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 = (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); + 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; + } - bool wavein_sign = i >= 0x4000; - uint8_t add_r_0 = ((i / 0x400) >> 0) & 1; - uint8_t add_r_1 = ((i / 0x400) >> 1) & 1; - uint8_t add_r_2 = ((i / 0x400) >> 2) & 1; - uint8_t add_r_3 = ((i / 0x400) >> 3) & 1; + // Exp table to decode samples + // 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 < 0x8000; i++) + { + // 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 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)); - 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)); - 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)); - 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; - } + bool wavein_sign = i >= 0x4000; + uint8_t add_r_0 = BIT(i / 0x400, 0); + uint8_t add_r_1 = BIT(i / 0x400, 1); + uint8_t add_r_2 = BIT(i / 0x400, 2); + uint8_t add_r_3 = BIT(i / 0x400, 3); - // Wave rom values - for (size_t i = 0; i < 0x20000; i++) - { - size_t descrambled_i = ( - ((i >> 0) & 1) << 0 | - ((~i >> 1) & 1) << 1 | - ((i >> 2) & 1) << 2 | - ((~i >> 3) & 1) << 3 | - ((i >> 4) & 1) << 4 | - ((~i >> 5) & 1) << 5 | - ((i >> 6) & 1) << 6 | - ((i >> 7) & 1) << 7 | - ((~i >> 8) & 1) << 8 | - ((~i >> 9) & 1) << 9 | - ((i >> 10) & 1) << 10 | - ((i >> 11) & 1) << 11 | - ((i >> 12) & 1) << 12 | - ((i >> 13) & 1) << 13 | - ((i >> 14) & 1) << 14 | - ((i >> 15) & 1) << 15 | - ((i >> 16) & 1) << 16 - ); + // Copy pasted from silicon + 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)); + 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)); + 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)); + 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 exp_sample = ( - ((ic5[descrambled_i] >> 0) & 1) << 13 | - ((ic6[descrambled_i] >> 4) & 1) << 12 | - ((ic7[descrambled_i] >> 4) & 1) << 11 | - ((~ic6[descrambled_i] >> 0) & 1) << 10 | - ((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 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; + } - uint16_t delta_sample = ( - ((~ic7[descrambled_i] >> 6) & 1) << 8 | - ((ic5[descrambled_i] >> 4) & 1) << 7 | - ((ic7[descrambled_i] >> 0) & 1) << 6 | - ((~ic6[descrambled_i] >> 3) & 1) << 5 | - ((ic5[descrambled_i] >> 2) & 1) << 4 | - ((~ic5[descrambled_i] >> 6) & 1) << 3 | - ((ic6[descrambled_i] >> 6) & 1) << 2 | - ((ic7[descrambled_i] >> 5) & 1) << 1 | - ((~ic6[descrambled_i] >> 7) & 1) << 0 - ); - bool delta_sign = (ic6[descrambled_i] >> 1) & 1; - samples_delta[i] = delta_sample; - samples_delta_sign[i] = delta_sign; - } + // Wave rom values + for (size_t i = 0; i < 0x20000; i++) + { + const size_t descrambled_i = i ^ 0b0'00000011'00101010; + + const uint16_t exp_sample = + BIT( ic5[descrambled_i], 0) << 13 | + BIT( ic6[descrambled_i], 4) << 12 | + BIT( ic7[descrambled_i], 4) << 11 | + BIT(~ic6[descrambled_i], 0) << 10 | + BIT( ic7[descrambled_i], 7) << 9 | + BIT( ic5[descrambled_i], 7) << 8 | + BIT(~ic5[descrambled_i], 5) << 7 | + 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) { - if (!machine().side_effects_disabled()) - return m_irq_id; + if (!machine().side_effects_disabled()) + return m_irq_id; - return m_ctrl_mem[offset]; + return m_ctrl_mem[offset]; } void roland_sa_device::write(offs_t offset, u8 data) { - m_int_callback(CLEAR_LINE); - m_irq_triggered = false; + m_int_callback(CLEAR_LINE); + 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 const &inputs, std::vector &outputs) { - outputs[0].fill(0); + outputs[0].fill(0); - int32_t *int_buffer = new int32_t[outputs[0].samples()]; - for (size_t i = 0; i < outputs[0].samples(); i++) - int_buffer[i] = 0; + std::unique_ptr int_buffer = make_unique_clear(outputs[0].samples()); - for (size_t voiceI = 0; voiceI < NUM_VOICES; voiceI++) - { - for (size_t partI = 0; partI < PARTS_PER_VOICE; partI++) - { - SA_Part &part = m_parts[voiceI][partI]; - 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 wave_addr_loop = m_ctrl_mem[mem_offset + 2]; - uint32_t wave_addr_high = m_ctrl_mem[mem_offset + 3]; - uint32_t env_dest = m_ctrl_mem[mem_offset + 4]; - uint32_t env_speed = m_ctrl_mem[mem_offset + 5]; - uint32_t flags = m_ctrl_mem[mem_offset + 6]; - uint32_t env_offset = m_ctrl_mem[mem_offset + 7]; + for (size_t voiceI = 0; voiceI < NUM_VOICES; voiceI++) + { + for (size_t partI = 0; partI < PARTS_PER_VOICE; partI++) + { + SA_Part &part = m_parts[voiceI][partI]; + 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 wave_addr_loop = m_ctrl_mem[mem_offset + 2]; + uint32_t wave_addr_high = m_ctrl_mem[mem_offset + 3]; + uint32_t env_dest = m_ctrl_mem[mem_offset + 4]; + uint32_t env_speed = m_ctrl_mem[mem_offset + 5]; + uint32_t flags = m_ctrl_mem[mem_offset + 6]; + 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++) - { - uint32_t volume; - uint32_t waverom_addr; - bool ag3_sel_sample_type; - bool ag1_phase_hi; + for (size_t i = 0; i < outputs[0].samples(); i++) + { + uint32_t volume; + uint32_t waverom_addr; + bool ag3_sel_sample_type; + bool ag1_phase_hi; - // IC19 - { - bool env_speed_some_high = - 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); + // IC19 + { + bool env_speed_some_high = + 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); - uint32_t adder1_a = part.env_value; - if (BIT(flags, 0)) - adder1_a = 1 << 25; - uint32_t adder1_b = env_table[env_speed]; - bool adder1_ci = env_speed_some_high && BIT(env_speed, 7); - if (adder1_ci) - adder1_b |= 0x7f << 21; + uint32_t adder1_a = part.env_value; + if (BIT(flags, 0)) + adder1_a = 1 << 25; + uint32_t adder1_b = env_table[env_speed]; + bool adder1_ci = env_speed_some_high && BIT(env_speed, 7); + if (adder1_ci) + adder1_b |= 0x7f << 21; - uint32_t adder3_o = 1 + (adder1_a >> 20) + env_offset; - uint32_t adder3_of = adder3_o > 0xff; - adder3_o &= 0xff; + uint32_t adder3_o = 1 + (adder1_a >> 20) + env_offset; + uint32_t adder3_of = adder3_o > 0xff; + adder3_o &= 0xff; - volume = ~( - ((adder1_a >> 14) & 0b111111) | - ((adder3_o & 0b1111) << 6) | - (adder3_of ? ((adder3_o & 0b11110000) << 6) : 0) - ) & 0x3fff; + volume = ~( + ((adder1_a >> 14) & 0b111111) | + ((adder3_o & 0b1111) << 6) | + (adder3_of ? ((adder3_o & 0b11110000) << 6) : 0) + ) & 0x3fff; - uint32_t adder1_o = adder1_a + adder1_b + (adder1_ci ? 1 : 0); - uint32_t adder1_of = adder1_o > 0xfffffff; - adder1_o &= 0xfffffff; + uint32_t adder1_o = adder1_a + adder1_b + (adder1_ci ? 1 : 0); + uint32_t adder1_of = adder1_o > 0xfffffff; + adder1_o &= 0xfffffff; - uint32_t adder2_o = (adder1_o >> 20) + (~env_dest & 0xff) + 1; - uint32_t adder2_of = adder2_o > 0xff; + uint32_t adder2_o = (adder1_o >> 20) + (~env_dest & 0xff) + 1; + 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)); - irq |= end_reached; + bool end_reached = env_speed_some_high && ((adder1_of != (BIT(env_speed, 7))) || ((BIT(env_speed, 7)) != adder2_of)); + irq |= end_reached; - part.env_value = end_reached ? (env_dest << 20) : adder1_o; - } + part.env_value = end_reached ? (env_dest << 20) : adder1_o; + } - // IC9 - { - uint32_t adder1 = (phase_exp_table[pitch_lut_i] + part.sub_phase) & 0xffffff; - uint32_t adder2 = 1 + (adder1 >> 16) + ((~wave_addr_loop) & 0xff); - bool adder2_co = adder2 > 0xff; - adder2 &= 0xff; - uint32_t adder1_and = BIT(flags, 1) ? 0 : (adder1 & 0xffff); - adder1_and |= (BIT(flags, 1) ? 0 : (adder2_co ? adder2 : (adder1 >> 16))) << 16; + // IC9 + { + uint32_t adder1 = (phase_exp_table[pitch_lut_i] + part.sub_phase) & 0xffffff; + uint32_t adder2 = 1 + (adder1 >> 16) + ((~wave_addr_loop) & 0xff); + bool adder2_co = adder2 > 0xff; + adder2 &= 0xff; + uint32_t adder1_and = BIT(flags, 1) ? 0 : (adder1 & 0xffff); + adder1_and |= (BIT(flags, 1) ? 0 : (adder2_co ? adder2 : (adder1 >> 16))) << 16; - part.sub_phase = adder1_and; - waverom_addr = (wave_addr_high << 11) | ((part.sub_phase >> 9) & 0x7ff); + part.sub_phase = adder1_and; + 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) || - !((BIT(waverom_addr, 13) && !BIT(waverom_addr, 11) && !BIT(waverom_addr, 12)) || !BIT(waverom_addr, 13)); - ag1_phase_hi = ( - (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(flags, 1) - ); - } + 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)); + ag1_phase_hi = ( + (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(flags, 1) + ); + } - // IC8 - { - uint32_t waverom_pa = samples_exp[waverom_addr]; - uint32_t waverom_pb = samples_delta[waverom_addr]; - bool sign_pa = samples_exp_sign[waverom_addr]; - bool sign_pb = samples_delta_sign[waverom_addr]; - waverom_pa |= ag3_sel_sample_type ? 1 : 0; - waverom_pb |= ag3_sel_sample_type ? 0 : 1; + // IC8 + { + uint32_t waverom_pa = samples_exp[waverom_addr]; + uint32_t waverom_pb = samples_delta[waverom_addr]; + bool sign_pa = samples_exp_sign[waverom_addr]; + bool sign_pb = samples_delta_sign[waverom_addr]; + waverom_pa |= ag3_sel_sample_type ? 1 : 0; + waverom_pb |= ag3_sel_sample_type ? 0 : 1; - if (ag1_phase_hi) - volume |= 0b1111 << 10; + if (ag1_phase_hi) + volume |= 0b1111 << 10; - uint32_t tmp_1, tmp_2; + uint32_t tmp_1, tmp_2; - uint32_t adder1_o = volume + waverom_pa; - bool adder1_co = adder1_o > 0x3fff; - adder1_o &= 0x3fff; - if (adder1_co) - adder1_o |= 0x3c00; - tmp_1 = adder1_o; + uint32_t adder1_o = volume + waverom_pa; + bool adder1_co = adder1_o > 0x3fff; + adder1_o &= 0x3fff; + if (adder1_co) + adder1_o |= 0x3c00; + tmp_1 = adder1_o; - uint32_t adder3_o = addr_table[(part.sub_phase >> 5) & 0xf] + (waverom_pb & 0x1ff); - bool adder3_of = adder3_o > 0x1ff; - adder3_o &= 0x1ff; - if (adder3_of) - 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; - } - } + uint32_t adder3_o = addr_table[(part.sub_phase >> 5) & 0xf] + (waverom_pb & 0x1ff); + bool adder3_of = adder3_o > 0x1ff; + adder3_o &= 0x1ff; + if (adder3_of) + adder3_o |= 0x1e0; - if (irq && !m_irq_triggered) - { - m_irq_id = partI | (voiceI << 4); - m_int_callback(ASSERT_LINE); - m_irq_triggered = true; - } - } - } + adder1_o = volume + (adder3_o << 5); + adder1_co = adder1_o > 0x3fff; + adder1_o &= 0x3fff; + if (adder1_co) + adder1_o |= 0x3c00; + tmp_2 = adder1_o; - for (size_t i = 0; i < outputs[0].samples(); i++) - outputs[0].put_int(i, int_buffer[i], 0xffff); + 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; - 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); } diff --git a/src/devices/sound/roland_sa.h b/src/devices/sound/roland_sa.h index 8885d06464c..21c6440722c 100644 --- a/src/devices/sound/roland_sa.h +++ b/src/devices/sound/roland_sa.h @@ -8,53 +8,50 @@ class roland_sa_device : public device_t, public device_sound_interface { 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); - void write(offs_t offset, u8 data); + u8 read(offs_t offset); + void write(offs_t offset, u8 data); - void load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7); - void set_sr_mode(bool mode); + void load_roms(uint8_t *ic5, uint8_t *ic6, uint8_t *ic7); + void set_sr_mode(bool mode); protected: - // device_t implementation - virtual void device_start() override; - virtual void device_reset() override; + // device_t implementation + virtual void device_start() override ATTR_COLD; + virtual void device_reset() override ATTR_COLD; - // device_sound_interface implementation - virtual void sound_stream_update(sound_stream &stream, std::vector const &inputs, std::vector &outputs) override; + // device_sound_interface implementation + virtual void sound_stream_update(sound_stream &stream, std::vector const &inputs, std::vector &outputs) override; private: - static constexpr unsigned NUM_VOICES = 16; - static constexpr unsigned PARTS_PER_VOICE = 10; + static constexpr unsigned NUM_VOICES = 16; + static constexpr unsigned PARTS_PER_VOICE = 10; - static const uint32_t env_table[]; - static const uint16_t addr_table[]; + uint16_t samples_exp[0x20000]; + bool samples_exp_sign[0x20000]; + uint16_t samples_delta[0x20000]; + bool samples_delta_sign[0x20000]; - uint16_t samples_exp[0x20000]; - bool samples_exp_sign[0x20000]; - uint16_t samples_delta[0x20000]; - bool samples_delta_sign[0x20000]; + uint32_t phase_exp_table[0x10000]; + uint16_t samples_exp_table[0x8000]; - uint32_t phase_exp_table[0x10000]; - uint16_t samples_exp_table[0x8000]; + struct SA_Part + { + uint32_t sub_phase; + uint32_t env_value; + }; - struct SA_Part - { - uint32_t sub_phase; - uint32_t env_value; - }; + devcb_write_line m_int_callback; - devcb_write_line m_int_callback; - - sound_stream *m_stream; // stream handle - SA_Part m_parts[NUM_VOICES][PARTS_PER_VOICE]; // channel memory - uint8_t m_ctrl_mem[0x2000]; // RAM IC12 (as the CPU writes it) - uint8_t m_irq_id; // voice/part that triggered the IRQ - bool m_irq_triggered; // if there is an IRQ currently waiting - bool m_sr_mode; // sample rate mode (true = 20 KHz, false = 32 KHz) + sound_stream *m_stream; // stream handle + SA_Part m_parts[NUM_VOICES][PARTS_PER_VOICE]; // channel memory + uint8_t m_ctrl_mem[0x2000]; // RAM IC12 (as the CPU writes it) + uint8_t m_irq_id; // voice/part that triggered the IRQ + 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) diff --git a/src/devices/sound/upd931.cpp b/src/devices/sound/upd931.cpp index c5c1e1c22b4..f2986ed68cd 100644 --- a/src/devices/sound/upd931.cpp +++ b/src/devices/sound/upd931.cpp @@ -2,15 +2,15 @@ // 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: - https://www.firstpr.com.au/rwi/casio/Casio-931-2006-06-17.txt - Any references to MT-65 behavior are based on this document. + 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 + Any references to MT-65 behavior are based on this document. - TODO: - - implement vibrato register (CT-8000 doesn't use it) - - a few other unknown/unclear bits in the flags shift register + TODO: + - implement vibrato register (CT-8000 doesn't use it) + - a few other unknown/unclear bits in the flags shift register ***************************************************************************/ #include "emu.h" diff --git a/src/lib/formats/h17disk.cpp b/src/lib/formats/h17disk.cpp index a02112d8ec7..9fb211ddb0d 100644 --- a/src/lib/formats/h17disk.cpp +++ b/src/lib/formats/h17disk.cpp @@ -167,7 +167,7 @@ bool heath_h17d_format::load(util::random_read &io, uint32_t form_factor, const std::vector buf; auto const [secm_pos, secm_length] = find_block(io, SecM); - + uint8_t sector_meta_data[SECTOR_METADATA_SIZE]; uint8_t sector_data[SECTOR_DATA_SIZE]; diff --git a/src/mame/amiga/amiga_m.cpp b/src/mame/amiga/amiga_m.cpp index a1eb5c15d5f..35ea115b28d 100644 --- a/src/mame/amiga/amiga_m.cpp +++ b/src/mame/amiga/amiga_m.cpp @@ -1241,11 +1241,11 @@ void amiga_state::aga_map(address_map &map) void amiga_state::custom_chip_reset() { - // TODO: not entirely correct - // - OCS Denise returns open bus - // - ECS Denise should return 0xff << 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 + // TODO: not entirely correct + // - OCS Denise returns open bus + // - ECS Denise should return 0xff << 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 CUSTOM_REG(REG_DENISEID) = m_denise_id; CUSTOM_REG(REG_VPOSR) = m_agnus_id << 8; CUSTOM_REG(REG_DDFSTRT) = 0x18; @@ -1571,7 +1571,7 @@ void amiga_state::custom_chip_w(offs_t offset, uint16_t data) case REG_DDFSTOP: /* 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; if (data > 0xd8) { diff --git a/src/mame/bfm/bfcobra.cpp b/src/mame/bfm/bfcobra.cpp index 9f1a7703f27..edc47e49326 100644 --- a/src/mame/bfm/bfcobra.cpp +++ b/src/mame/bfm/bfcobra.cpp @@ -2825,7 +2825,7 @@ ROM_START( inquiztr ) ROM_LOAD( "inqdisk.img", 0x000000, 0x1c2000, NO_DUMP ) ROM_END -// Alternate Version 1.2 +// Alternate Version 1.2 ROM_START( inquiztr12a ) ROM_REGION( 0x10000, "audiocpu", 0 ) ROM_LOAD( "inq6809", 0x08000, 0x08000, CRC(ae996600) SHA1(f360399e77b81399d910770fa8106c196f04363c) ) diff --git a/src/mame/casio/ct8000.cpp b/src/mame/casio/ct8000.cpp index 8406f107d0c..5e4d9273bf6 100644 --- a/src/mame/casio/ct8000.cpp +++ b/src/mame/casio/ct8000.cpp @@ -3,34 +3,34 @@ // thanks-to:BCM /*************************************************************************** - Casiotone 8000 / "Symphonytron" system + Casiotone 8000 / "Symphonytron" system - The Symphonytron was a modular electronic organ produced by Casio in 1983. - The full system consists of: + The Symphonytron was a modular electronic organ produced by Casio in 1983. + The full system consists of: - - up to two Casiotone 8000 keyboards (8049 CPU, 2x uPD931 "vowel-consonant synthesis") - - RC-1 accompaniment unit (uPD7801 CPU, uPD930 rhythm generator, analog percussion) - - MB-1 memory unit (8049 CPU, 2x uPD931, RAM cartridge slot) - - FK-1 pedal keyboard (8049 CPU, single uPD931) - - CS-100 or CS-200 keyboard stand with built-in mixer + - up to two Casiotone 8000 keyboards (8049 CPU, 2x uPD931 "vowel-consonant synthesis") + - RC-1 accompaniment unit (uPD7801 CPU, uPD930 rhythm generator, analog percussion) + - MB-1 memory unit (8049 CPU, 2x uPD931, RAM cartridge slot) + - FK-1 pedal keyboard (8049 CPU, single uPD931) + - 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. - 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 - 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 - is automatically forwarded to the other. + 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 + 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 + the keyboards. The RC-1 also has a "tone mix" feature, where note data received from one keyboard + 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 - 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. + 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. + 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 - of MIDI messages into the protocol used with the original connectors. + 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. - TODO: - - volume/expression pedal (for all systems) - - fix aliasing in BBD output for some presets + TODO: + - volume/expression pedal (for all systems) + - 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(0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F2") PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_UNUSED) - + PORT_START("KC9") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED) PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tune Up") @@ -790,7 +790,7 @@ INPUT_PORTS_START(ctfk1) PORT_START("KCA") PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Sustain") PORT_TOGGLE PORT_BIT(0xfe, IP_ACTIVE_LOW, IPT_UNUSED) - + PORT_START("KCB") PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_UNUSED) // KI0->KCB diode PORT_BIT(0x0e, IP_ACTIVE_LOW, IPT_UNUSED) diff --git a/src/mame/casio/ct8000_midi.cpp b/src/mame/casio/ct8000_midi.cpp index 5d89f817cbe..fbbf09e8231 100644 --- a/src/mame/casio/ct8000_midi.cpp +++ b/src/mame/casio/ct8000_midi.cpp @@ -2,66 +2,66 @@ // 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. - Aside from Note Off/On and Program Change messages, this also handles: - - CC #1 (vibrato) - - CC #64 (sustain pedal) - - CC #69 (sustain switch) - - CC #91 (reverb) - - CC #93 (chorus) - - CC #120 (all sound off) - - CC #121 (reset controllers) - - CC #123 (all notes off) - - CC #124-127 (equivalent to 123, otherwise no effect) - - MIDI reset (status 0xFF) + 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: + - CC #1 (vibrato) + - CC #64 (sustain pedal) + - CC #69 (sustain switch) + - CC #91 (reverb) + - CC #93 (chorus) + - CC #120 (all sound off) + - CC #121 (reset controllers) + - CC #123 (all notes off) + - CC #124-127 (equivalent to 123, otherwise no effect) + - 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: - - high nibble of command - - number of following nibbles (normally 1 or 3) - - low nibble of command - - high nibble of data (if any) - - low nibble of data (if any) + Messages are sent in 4-bit increments over the DIN connector, in the following order: + - high nibble of command + - number of following nibbles (normally 1 or 3) + - low nibble of command + - high 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: - 10 xx - set effects - 11 xx - lock effects (corresponding buttons/pedal do nothing while set) - 12 xx - ??? effects - ^^ bit 0 = reverb - bit 1 = vibrato - bit 2 = sustain pedal (only affects the local keyboard) - bit 3 = stereo chorus - bit 4 = sustain switch + The CT-8000 recognizes these messages: + 10 xx - set effects + 11 xx - lock effects (corresponding buttons/pedal do nothing while set) + 12 xx - ??? effects + ^^ bit 0 = reverb + bit 1 = vibrato + bit 2 = sustain pedal (only affects the local keyboard) + bit 3 = stereo chorus + bit 4 = sustain switch - 20 xx - set lowest 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) - 23 xx - set highest possible note to receive/play (default is 0x61 = C6) - 24 - stop all notes - 28 xx - note on or off - ^^ bit 7 = note on, bits 6-4 = octave, bits 3-0 = note from 0x1 (C) to 0xC (B) + 20 xx - set lowest 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) + 23 xx - set highest possible note to receive/play (default is 0x61 = C6) + 24 - stop all notes + 28 xx - note on or off + ^^ 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: - A0 xx - ??? - A1 xx - ??? - A2 xx - ??? - A3 xx - ??? - A4 - clear values from A0-A3 + The MB-1 recognizes all of the above, plus: + A0 xx - ??? + A1 xx - ??? + A2 xx - ??? + A3 xx - ??? + A4 - clear values from A0-A3 ***************************************************************************/ diff --git a/src/mame/kaneko/snowbros.cpp b/src/mame/kaneko/snowbros.cpp index f4c6dbe4f20..14e26b81e29 100644 --- a/src/mame/kaneko/snowbros.cpp +++ b/src/mame/kaneko/snowbros.cpp @@ -3274,7 +3274,7 @@ void snowbros_state::init_gwasu() rom[0xfdaa / 2] = 0x3345; // checksum is done on startup, must equal 0 - rom[0x54 / 2] = 0x11ef; + rom[0x54 / 2] = 0x11ef; } diff --git a/src/mame/konami/asterix.cpp b/src/mame/konami/asterix.cpp index 6869079598b..12513617d3e 100644 --- a/src/mame/konami/asterix.cpp +++ b/src/mame/konami/asterix.cpp @@ -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); /* 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_k056832->tilemap_draw(screen, bitmap, cliprect, 2, K056832_DRAW_FLAG_MIRROR, 0); diff --git a/src/mame/layout/bejpoker.lay b/src/mame/layout/bejpoker.lay index 38f76cff7c4..ecd352140fe 100644 --- a/src/mame/layout/bejpoker.lay +++ b/src/mame/layout/bejpoker.lay @@ -153,7 +153,7 @@ Bonanza's Joker Poker control panel - + @@ -217,7 +217,7 @@ Bonanza's Joker Poker control panel - + @@ -266,6 +266,6 @@ Bonanza's Joker Poker control panel - + - \ No newline at end of file + diff --git a/src/mame/layout/codemagik.lay b/src/mame/layout/codemagik.lay index 688b8da801e..ba177a54ef5 100644 --- a/src/mame/layout/codemagik.lay +++ b/src/mame/layout/codemagik.lay @@ -60,7 +60,7 @@ copyright-holders: Roberto Fresca & Grull Osgo - + @@ -69,7 +69,7 @@ copyright-holders: Roberto Fresca & Grull Osgo - + diff --git a/src/mame/layout/ct8000.lay b/src/mame/layout/ct8000.lay index ac1f5b2c056..2a15d103903 100644 --- a/src/mame/layout/ct8000.lay +++ b/src/mame/layout/ct8000.lay @@ -8,7 +8,7 @@ license:CC0-1.0 - + @@ -32,7 +32,7 @@ license:CC0-1.0 - + @@ -92,20 +92,20 @@ license:CC0-1.0 - + - + - + @@ -120,7 +120,7 @@ license:CC0-1.0 ]]> - + @@ -135,23 +135,23 @@ license:CC0-1.0 ]]> - + - + - + - + - + @@ -203,11 +203,11 @@ license:CC0-1.0 - + - + @@ -223,7 +223,7 @@ license:CC0-1.0 - + @@ -234,7 +234,7 @@ license:CC0-1.0 - + @@ -319,7 +319,7 @@ license:CC0-1.0 - + @@ -330,7 +330,7 @@ license:CC0-1.0 - + @@ -340,7 +340,7 @@ license:CC0-1.0 - + @@ -351,7 +351,7 @@ license:CC0-1.0 - + @@ -361,7 +361,7 @@ license:CC0-1.0 - + @@ -372,7 +372,7 @@ license:CC0-1.0 - + @@ -381,7 +381,7 @@ license:CC0-1.0 - + @@ -392,7 +392,7 @@ license:CC0-1.0 - + @@ -406,7 +406,7 @@ license:CC0-1.0 - + diff --git a/src/mame/layout/ctfk1.lay b/src/mame/layout/ctfk1.lay index 412ec8025b1..f428a0964d5 100644 --- a/src/mame/layout/ctfk1.lay +++ b/src/mame/layout/ctfk1.lay @@ -8,7 +8,7 @@ license:CC0-1.0 - + @@ -35,7 +35,7 @@ license:CC0-1.0 - + @@ -58,7 +58,7 @@ license:CC0-1.0 - + @@ -74,7 +74,7 @@ license:CC0-1.0 ]]> - + @@ -98,17 +98,17 @@ license:CC0-1.0 - + - + - + - + @@ -139,21 +139,21 @@ license:CC0-1.0 - + - + - + @@ -165,7 +165,7 @@ license:CC0-1.0 - + @@ -174,7 +174,7 @@ license:CC0-1.0 - + @@ -182,19 +182,19 @@ license:CC0-1.0 - + - + - + @@ -207,7 +207,7 @@ license:CC0-1.0 - + @@ -217,12 +217,12 @@ license:CC0-1.0 - + - + diff --git a/src/mame/layout/goldnpkr.lay b/src/mame/layout/goldnpkr.lay index 4f8249ac05b..52c5ff45e34 100644 --- a/src/mame/layout/goldnpkr.lay +++ b/src/mame/layout/goldnpkr.lay @@ -153,7 +153,7 @@ license:CC0-1.0 - + diff --git a/src/mame/layout/goldnswp.lay b/src/mame/layout/goldnswp.lay index a0ca761561d..e59b68d8295 100644 --- a/src/mame/layout/goldnswp.lay +++ b/src/mame/layout/goldnswp.lay @@ -153,7 +153,7 @@ license:CC0-1.0 - + diff --git a/src/mame/layout/sminiboy.lay b/src/mame/layout/sminiboy.lay index 451eaf7046b..35bee570f42 100644 --- a/src/mame/layout/sminiboy.lay +++ b/src/mame/layout/sminiboy.lay @@ -154,7 +154,7 @@ Super Mini-Boy control panel - + @@ -218,7 +218,7 @@ Super Mini-Boy control panel - + @@ -267,6 +267,6 @@ Super Mini-Boy control panel - + diff --git a/src/mame/midway/wmg.cpp b/src/mame/midway/wmg.cpp index 5e221e2288b..89350bbeb23 100644 --- a/src/mame/midway/wmg.cpp +++ b/src/mame/midway/wmg.cpp @@ -463,8 +463,8 @@ ioport_value wmg_state::wmg_mux_r() u8 wmg_state::wmg_pia_0_r(offs_t offset) { /* 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 - which probably just resets the cpu. */ + Since there is no code in rom to handle this, it must be a hardware feature + which probably just resets the cpu. */ uint8_t const data = m_pia[0]->read(offset); diff --git a/src/mame/misc/goldnpkr.cpp b/src/mame/misc/goldnpkr.cpp index 73d71869428..d52a9ab579c 100644 --- a/src/mame/misc/goldnpkr.cpp +++ b/src/mame/misc/goldnpkr.cpp @@ -572,7 +572,7 @@ - How to Set the Password: 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. 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. @@ -1198,7 +1198,7 @@ private: required_shared_ptr m_videoram; required_shared_ptr m_colorram; - optional_device m_hopper; + optional_device m_hopper; optional_device m_ay8910; output_finder<9> m_lamps; @@ -2078,7 +2078,7 @@ static INPUT_PORTS_START( jkrbonus ) PORT_MODIFY("IN0-3") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Weight (Coupon In)") PORT_CODE(KEYCODE_H) PORT_TOGGLE - + PORT_MODIFY("SW1") PORT_DIPNAME( 0x20, 0x20, "50hz/60hz" ) PORT_DIPLOCATION("SW1:2") PORT_DIPSETTING( 0x20, "50hz" ) @@ -2217,7 +2217,7 @@ static INPUT_PORTS_START( pottnpkr ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_UNKNOWN ) 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( 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( 0x20, 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. */ -ROM_START( potnpkro ) // ICP-1 wires hack set. +ROM_START( potnpkro ) // ICP-1 wires hack set. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "7.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) 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_END -ROM_START( potnpkrp ) // ICP-1 PROM mod set. +ROM_START( potnpkrp ) // ICP-1 PROM mod set. ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "6.16a", 0x6000, 0x1000, CRC(2dc5e372) SHA1(70a251efe879bc1122baa78984251041a355c895) ) ROM_LOAD( "95_09_hn71_7.17a", 0x7000, 0x1000, CRC(2353317a) SHA1(18bf8cfe30aaa4b05207cc250ec1c024bc19ed56) ) diff --git a/src/mame/misc/lependu.cpp b/src/mame/misc/lependu.cpp index 19e75b28b6d..83104b14871 100644 --- a/src/mame/misc/lependu.cpp +++ b/src/mame/misc/lependu.cpp @@ -13,7 +13,7 @@ Games supported: - + * Le Pendu (Bilingue, Version 04), 198?, Avenir Amusement 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 - + 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 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 @@ -171,7 +171,7 @@ public: void lamps_w(uint8_t data); void lamps_cm_w(uint8_t data); - + void sound_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( 0x04, 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( 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( 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( 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( 0x00, DEF_STR( On ) ) diff --git a/src/mame/misc/miniboy7.cpp b/src/mame/misc/miniboy7.cpp index dff8470885f..a6549ec0969 100644 --- a/src/mame/misc/miniboy7.cpp +++ b/src/mame/misc/miniboy7.cpp @@ -24,7 +24,7 @@ Model BE-7000/MBS. https://flyers.arcade-museum.com/videogames/show/4043 https://flyers.arcade-museum.com/videogames/show/6161 - + Seven games in one, plus Ad message support. - Draw Poker. @@ -132,7 +132,7 @@ 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 - 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. To return to normal operation, reset the machine. @@ -332,7 +332,7 @@ - Lot of fixes, getting Super Mini-Boy working. - Added lamps support and button-lamps layout for Super Mini-Boy. - 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. - Some clean-up. @@ -342,7 +342,7 @@ - Lot of fixes and new machine driver, getting Joker Poker working. - Fixed crystal/clocks and derivatives. - 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. @@ -399,7 +399,7 @@ public: void miniboy7(machine_config &config); void sminiboy(machine_config &config); void bejpoker(machine_config &config); - + void init_smini(); protected: @@ -578,7 +578,7 @@ uint8_t miniboy7_state::lamp_latch_r() m_lamps[0] = BIT(data, 4); // [----x] lamp0 bet m_lamps[1] = BIT(data, 3); // [---x-] lamp1 deal/draw 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 machine().bookkeeping().coin_counter_w(0, data & 0x40); // counter @@ -620,9 +620,9 @@ uint8_t miniboy7_state::s_pia_pb_r() case 0xfb: case 0x7b: ret = m_input[4]->read(); break; 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 - } + } 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( 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_START("INPUT5") // pia_pb mux 0xfb - mem 2620 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_GAMBLE_KEYOUT ) PORT_BIT( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked - + PORT_START("INPUT6") // pia_pb mux 0xfd - mem 2622 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) 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( 0xf4, IP_ACTIVE_LOW, IPT_UNUSED ) // program masked - + PORT_START("DSW2") - // mux=0xff + // mux=0xff PORT_DIPNAME( 0x03, 0x00, "D.UP Seven" ) PORT_DIPLOCATION("DSW2:8,7") PORT_DIPSETTING( 0x00, "Reset" ) PORT_DIPSETTING( 0x01, "Reset" ) PORT_DIPSETTING( 0x02, "Even" ) 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( 0x00, DEF_STR( On ) ) 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) { miniboy7(config); - + pia6821_device &pia(PIA6821(config.replace(), "pia0")); pia.readpa_handler().set(FUNC(miniboy7_state::s_pia_pa_r)); pia.readpb_handler().set(FUNC(miniboy7_state::s_pia_pb_r)); 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) @@ -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, 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( 1992, bejpoker, 0, bejpoker, bejpoker, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Bonanza's Joker Poker", MACHINE_SUPPORTS_SAVE, layout_bejpoker ) \ No newline at end of file +GAMEL( 1992, bejpoker, 0, bejpoker, bejpoker, miniboy7_state, empty_init, ROT0, "Bonanza Enterprises, Ltd", "Bonanza's Joker Poker", MACHINE_SUPPORTS_SAVE, layout_bejpoker ) diff --git a/src/mame/moog/memorymoog.cpp b/src/mame/moog/memorymoog.cpp index 3afcc8480f2..c070dd08680 100644 --- a/src/mame/moog/memorymoog.cpp +++ b/src/mame/moog/memorymoog.cpp @@ -339,7 +339,7 @@ bool memorymoog_state::adc_comparator_on() const if (m_selected_pot == 0) { LOGMASKED(LOG_ADC, "Comparator: %f %f %d %04x\n", v, dac_v, comp_on, - m_dac_latch); + m_dac_latch); } return comp_on; } @@ -389,7 +389,7 @@ template u8 memorymoog_state::key_matrix_r( if (pressed != 0xff) LOGMASKED(LOG_KEYPRESS, "Pressed %s %02X: %02X\n", name, selection, - pressed); + pressed); return pressed; // Returned value is active-low. } @@ -421,7 +421,7 @@ void memorymoog_state::update_sh() m_cv[m_selected_sh] = cv; // TODO: all autotune CVs are divided by a 115K-10K divider. 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) diff --git a/src/mame/namco/namcos86_v.cpp b/src/mame/namco/namcos86_v.cpp index f699f3a0372..a324b8a0fd6 100644 --- a/src/mame/namco/namcos86_v.cpp +++ b/src/mame/namco/namcos86_v.cpp @@ -60,14 +60,14 @@ void namcos86_state::namcos86_palette(palette_device &palette) bit2 = BIT(color_prom[i], 2); bit3 = BIT(color_prom[i], 3); int const r = combine_weights(rweights, bit0, bit1, bit2, bit3); - + // green component bit0 = BIT(color_prom[i], 4); bit1 = BIT(color_prom[i], 5); bit2 = BIT(color_prom[i], 6); bit3 = BIT(color_prom[i], 7); int const g = combine_weights(gweights, bit0, bit1, bit2, bit3); - + // blue component bit0 = BIT(color_prom[i | 0x200], 0); bit1 = BIT(color_prom[i | 0x200], 1); diff --git a/src/mame/oberheim/dmx.cpp b/src/mame/oberheim/dmx.cpp index 5e513563f20..fc1e71438f4 100644 --- a/src/mame/oberheim/dmx.cpp +++ b/src/mame/oberheim/dmx.cpp @@ -134,7 +134,7 @@ struct dmx_voice_card_config DISABLED, // 4.7K resistor connected to position 1 (+5V). ENABLED, // Jumper disconnected. 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; @@ -143,7 +143,7 @@ struct dmx_voice_card_config { ENABLED, // Jumper connected to position 2 (+5V). 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; @@ -247,7 +247,7 @@ void dmx_voice_card_vca::start(int trigger_mode) m_selected_rc_inv = 1; 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() @@ -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)); 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; } @@ -321,7 +321,7 @@ void dmx_voice_card_vca::sound_stream_update(sound_stream &stream, const std::ve m_decay_done = true; 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) @@ -345,7 +345,7 @@ void dmx_voice_card_vca::init_gain_and_decay_variations(const dmx_voice_card_con // For trigger mode 1. 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. m_gain.push_back((r12 * VCC + R8 * VD) / (r12 * R8 + R8 * R9 + r12 * R9)); // 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) { 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. } @@ -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)); 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. const float alpha = 1.0F + r12 / m_config.r17; 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. 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. 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); 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) @@ -658,7 +658,7 @@ void dmx_voice_card::select_pitch() m_timer->adjust(sampling_t, 0, sampling_t); 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 @@ -723,7 +723,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(dmx_voice_card::clock_callback) if (!m_vca->in_decay() && is_decay_enabled()) { if ((is_early_decay_enabled() && m_counter >= EARLY_DECAY_START) || - m_counter >= LATE_DECAY_START) + m_counter >= LATE_DECAY_START) { m_vca->decay(); } @@ -1208,7 +1208,7 @@ u8 dmx_state::cassette_r() const u8 d7 = BIT(data, 7); // PROT* (memory protect switch. Active low). return (d7 << 7) | (d6 << 6) | (d5 << 5) | (d4 << 4) | - (d3 << 3) | (d2 << 2) | (d1 << 1) | d0; + (d3 << 3) | (d2 << 2) | (d1 << 1) | d0; } template 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); 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) diff --git a/src/mame/oberheim/ob8.cpp b/src/mame/oberheim/ob8.cpp index df5758494b5..bc5d90c5e92 100644 --- a/src/mame/oberheim/ob8.cpp +++ b/src/mame/oberheim/ob8.cpp @@ -429,7 +429,7 @@ INPUT_PORTS_START(ob8) INPUT_PORTS_END ROM_START(ob8) - ROM_REGION(0X4000, MAINCPU_TAG, 0) + ROM_REGION(0x4000, MAINCPU_TAG, 0) ROM_DEFAULT_BIOS("a8") ROM_SYSTEM_BIOS(0, "a8", "OB-8 A8 OS") diff --git a/src/mame/sega/megadriv_rad.cpp b/src/mame/sega/megadriv_rad.cpp index 05d405d4a38..921f1995100 100644 --- a/src/mame/sega/megadriv_rad.cpp +++ b/src/mame/sega/megadriv_rad.cpp @@ -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 // 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. -// +// // 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) 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) diff --git a/src/mame/tvgames/generalplus_gpl16250_spi.cpp b/src/mame/tvgames/generalplus_gpl16250_spi.cpp index be00bdb60a8..8479625cbaf 100644 --- a/src/mame/tvgames/generalplus_gpl16250_spi.cpp +++ b/src/mame/tvgames/generalplus_gpl16250_spi.cpp @@ -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 // but these just seem to be brands, manufacturer is unknown. // 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) // 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 // 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. diff --git a/src/mame/tvgames/spg2xx.cpp b/src/mame/tvgames/spg2xx.cpp index 5ef6fa3ef80..b587d6a54c5 100644 --- a/src/mame/tvgames/spg2xx.cpp +++ b/src/mame/tvgames/spg2xx.cpp @@ -488,7 +488,7 @@ INPUT_PORTS_END static INPUT_PORTS_START( epo_tetr ) // all inputs verified against hidden test mode PORT_INCLUDE( spg2xx ) - PORT_MODIFY("P1") + PORT_MODIFY("P1") PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) 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 ) // 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 // and IR connectivity which allowed for data exchange with various services using // an external device, including transfering characters to/from an arcade game. // Neither is currently emulated -// +// // 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 ) diff --git a/src/mame/tvgames/xavix.cpp b/src/mame/tvgames/xavix.cpp index 4a6ff41e6d5..8af3b1a32b5 100644 --- a/src/mame/tvgames/xavix.cpp +++ b/src/mame/tvgames/xavix.cpp @@ -62,15 +62,15 @@ 2005 Let's!TVプレイ ドラゴンボ-ルZ バトル体感かめはめ波~ おめぇとフュージョン / バンダイ / 日本 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 - 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 - Webdiver Gradion /TAKARA/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 - - - - - - - - どこでもドラえもん 日本旅行ゲームDX体感!どこドラグランプリ! / エポック社 / 日本 Doko Demo Doraemon Nihon Ryokou Game DX Taikan! Doko Dora Grand Prix! / Epoch / 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 + Webdiver Gradion /TAKARA/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 - - - - - - - + どこでもドラえもん 日本旅行ゲーム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 - anpan-man kazoku de ikunou mat DX /JoyPalette/Japan - - - - - - - - Excite Striker (UK) + anpan-man kazoku de ikunou mat DX /JoyPalette/Japan - - - - - - - + Excite Striker (UK) 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 construct the town! /TAKARA/Japan - - - - - - - @@ -311,13 +311,13 @@ void xavix_state::mainram_w(offs_t offset, uint8_t data) { m_mainram[offset] = data; /* -// trying to debug anpanmdx title screen issue - if ((offset == 0x3d) && (data == 0x77)) - logerror("%s: writing 0x77 to 0x3d\n", machine().describe_context()); - if ((offset == 0x98) && (data == 0x77)) - logerror("%s: writing 0x77 to 0x98\n", machine().describe_context()); - if ((offset == 0x3f2) && (data == 0x77)) - logerror("%s: writing 0x77 to 0x3f2\n", machine().describe_context()); +// trying to debug anpanmdx title screen issue + if ((offset == 0x3d) && (data == 0x77)) + logerror("%s: writing 0x77 to 0x3d\n", machine().describe_context()); + if ((offset == 0x98) && (data == 0x77)) + logerror("%s: writing 0x77 to 0x98\n", machine().describe_context()); + if ((offset == 0x3f2) && (data == 0x77)) + logerror("%s: writing 0x77 to 0x3f2\n", machine().describe_context()); // but the unwanted? value of 0x77 is explicitly set by the code at 1c61c */ } diff --git a/src/mame/tvgames/xavix_2002.cpp b/src/mame/tvgames/xavix_2002.cpp index 0c33d3f9f65..fb9e4ade595 100644 --- a/src/mame/tvgames/xavix_2002.cpp +++ b/src/mame/tvgames/xavix_2002.cpp @@ -773,7 +773,7 @@ ROM_START( epo_ntpj ) // 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_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 ) -// 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 ) // どこでもドラえもん 日本旅行ゲームDX体感!どこドラグランプリ! diff --git a/src/mame/ussr/jukumouse.cpp b/src/mame/ussr/jukumouse.cpp index 441849d7900..d5707784473 100644 --- a/src/mame/ussr/jukumouse.cpp +++ b/src/mame/ussr/jukumouse.cpp @@ -28,7 +28,7 @@ void juku_mouse_device::device_start() save_item(NAME(m_prev_mouse_y)); save_item(NAME(m_prev_mouse_x)); 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() @@ -75,7 +75,7 @@ static INPUT_PORTS_START( juku_mouse ) PORT_START("MOUSE_Y") PORT_BIT(0xff, 0x00, IPT_MOUSE_Y) PORT_CODE(MOUSECODE_Y) PORT_SENSITIVITY(23) - + PORT_START("BUTTONS") 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") diff --git a/src/mame/ussr/jukumouse.h b/src/mame/ussr/jukumouse.h index 47dfa219adf..512a2c84186 100644 --- a/src/mame/ussr/jukumouse.h +++ b/src/mame/ussr/jukumouse.h @@ -26,7 +26,7 @@ private: 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_byte; - devcb_write_line m_int_handler; + devcb_write_line m_int_handler; emu_timer *m_mouse_timer; };