help. I don't get the output. thanks!
April 18, 2024, 02:50:13 am
virtuo is okay.Sounds like I should keep the Angelina then, I really don't have an use for the stand. Im sending the acceptors today to a dealer that would update them to a regular non touchtunes firmware in order for me to use them as 12v pulse type. Thats all that is left before I put it in a place to work.
early models have issues with black spots appearing on the LCD panels due to a manufacturing defect. later models have no panel issues... but some issues with bad caps on the backlight inverters. newer ones have LED backlit panels and have issues with the caps going bad on the LVDS board. the later 2 being fixable... the spots, not at all other than panel replacement. good luck finding a panel to replace it....it's a weird size and wasn't available for long.
the computer is decent. it's output audio via regular headphone jacks so no messing around there. you will need a "red" DI box to convert the audio from the computer to the amp (amp accepts balanced audio over ethernet...the IO board does this so you'll have to sub the red DI box to do this.)
the card reader is worthless as it's been disabled due to new PCI credit card processing rules rules... making it non-compliant.
the stand should have woofers built into it... it should also have some satellite speakers attached to either side as well.
Something odd I noticed, is that in mame when viewing the "Control Inputs" service menu and turning the wheel clockwise, I see the hexadecimal number decrease, not increase...Sounds like the optical data lines (A and B) are swapped, which reverses the axis.
Compact harddrivin service manual (HDC_TM-329_2nd.pdf):
041787-02 Steering Encoder Disk.
043807-02 Centering Encoder Disk.
HDC_TM-329_2nd.pdf, From the "Control Inputs" service menu:
As you turn the steering wheel clockwise, the hexadecimal number should increase and change to zero once every turn.
As you turn the wheel counterclockwise, the number should decrease. Everytime the steering wheel passes the center position,
the words center edge should change from blue to green.
HDC_TM-329_2nd.pdf, from a section near the end about installing a new encoder wheel:
Install the steering wheel with the center spoke down. Make sure the single hole on the centering disk is between the opitcal reader on the centering
PCB so the steering wheel will be correctly centered.
From the Race Drivin' Compact Manual, for the Main Board Memory Map, it says:
OPTO: Optical Steering Wheel Reader
400000 (R) OPTORD Read the Optical Counter
404000 (W) OPTORES Reset the Optical Counter
408000 (W) CENRES Reset the Optical Centre Flag
just want to say ive been following this thread for quite a while.
I have a spare RPI 4 8gb, and it's getting this ASAP.
now i've gotta build a baby dk cab too - really amazing work. I am head over heels for your project.
You mentioned your health and single malt - hope everything is ok and you take care of yourself, tons of old nerds need you now more than ever!
uint16_t harddriv_state::hdc68k_wheel_r()
{
/* grab the new wheel value */
uint16_t new_wheel = m_12badc[0].read_safe(0xffff);
/* hack to display the wheel position */
if (machine().input().code_pressed(KEYCODE_LSHIFT))
popmessage("%04X", new_wheel);
/* if we crossed the center line, latch the edge bit */
if ((m_hdc68k_last_wheel / 0xf00) != (new_wheel / 0xf00))
m_hdc68k_wheel_edge = 1;
/* remember the last value and return the low 8 bits */
m_hdc68k_last_wheel = new_wheel;
return (new_wheel << 8) | 0xff;
}
uint16_t harddriv_state::hdc68k_wheel_r()
{
static const uint16_t g_latchpoint = 0x8000; // Central point for wheel detection.
static int16_t wheel_offset = 0; // Cumulative offset to adjust the wheel position based on game events.
static bool last_wheel_edge = false; // To track the last state of crossing the center.
// Read the current wheel position from the 12-bit ADC port.
uint16_t new_wheel_raw = m_12badc[0].read_safe(0xffff) << 4;
// Apply the cumulative offset to align with the game's perceived center.
uint16_t new_wheel = new_wheel_raw + wheel_offset;
// Edge detection logic to detect being at or crossing the center point using raw ADC data.
if ((m_hdc68k_last_wheel < g_latchpoint && new_wheel_raw >= g_latchpoint) ||
(m_hdc68k_last_wheel > g_latchpoint && new_wheel_raw <= g_latchpoint) ||
new_wheel_raw == g_latchpoint) {
m_hdc68k_wheel_edge = 1; // Set edge flag when at or crossing the center based on raw input.
}
// Check if the wheel edge flag has changed from 1 to 0, as reset by the game.
if (last_wheel_edge && !m_hdc68k_wheel_edge) {
// Calculate the offset adjustment when the wheel is recalibrated.
int16_t new_offset_adjustment = g_latchpoint - new_wheel_raw;
// Apply the adjustment based on the current wheel position relative to the center
if (new_wheel_raw > g_latchpoint) {
// Wheel is to the left, need to decrease raw value towards the center
wheel_offset += abs(new_offset_adjustment); // Use addition to adjust back towards the center
} else {
// Wheel is to the right, need to increase raw value towards the center
wheel_offset -= abs(new_offset_adjustment); // Use subtraction if below the center
}
new_wheel = new_wheel_raw + wheel_offset; // Reapply the updated offset.
}
last_wheel_edge = m_hdc68k_wheel_edge; // Store the last known state of the wheel edge flag.
// Display current wheel information for debugging.
popmessage("Wheel Raw: %04X, Wheel Adjusted: %04X, Edge: %d, Offset: %X",
new_wheel_raw, new_wheel, m_hdc68k_wheel_edge, wheel_offset);
// Store the current wheel value for the next comparison.
m_hdc68k_last_wheel = new_wheel_raw; // Update last_wheel to the raw value to ensure proper comparison next cycle.
// Return the processed wheel value, formatted as required.
return (new_wheel << 4) | 0xff;
}