mirror of
https://github.com/holub/mame
synced 2025-07-01 08:18:59 +03:00
astrob: significant performance increase
* uses all 4 Sonar oscillators * uses randomized resistor values (5% range) * uses frontiers to separate oscillators * improves performance to 340% locally.
This commit is contained in:
parent
63efcfcb85
commit
356613b82e
File diff suppressed because it is too large
Load Diff
@ -30,7 +30,8 @@
|
||||
|
||||
#define HLE_LASER_1_VCO (1)
|
||||
#define HLE_LASER_2_VCO (1)
|
||||
#define SIMPLIFY_SONAR (1)
|
||||
#define SIMPLIFY_SONAR (0) // only use one oscillator
|
||||
#define ENABLE_SONAR_ALT (1) // use frontiers to separate oscillators, modify UGF
|
||||
#define ENABLE_FRONTIERS (1)
|
||||
#define UNDERCLOCK_NOISE_GEN (1)
|
||||
|
||||
@ -58,7 +59,28 @@
|
||||
#define TTL_74LS00_DIP TTL_7400_DIP
|
||||
#define TTL_74LS04_DIP TTL_7404_DIP
|
||||
|
||||
// Define some random factors (5%)
|
||||
|
||||
#define FRND1 1.023
|
||||
#define FRND2 1.017
|
||||
#define FRND3 1.005
|
||||
#define FRND4 1.014
|
||||
#define FRND5 1.049
|
||||
#define FRND6 1.044
|
||||
#define FRND7 1.016
|
||||
#define FRND8 1.037
|
||||
#define FRND9 1.030
|
||||
#define FRND10 1.001
|
||||
#define FRND11 1.034
|
||||
#define FRND12 1.043
|
||||
#define FRND13 1.011
|
||||
#define FRND14 1.016
|
||||
#define FRND15 1.011
|
||||
#define FRND16 1.006
|
||||
#define FRND17 1.009
|
||||
#define FRND18 1.007
|
||||
#define FRND19 1.035
|
||||
#define FRND20 1.004
|
||||
|
||||
//
|
||||
// Main netlist
|
||||
@ -71,9 +93,11 @@ NETLIST_START(astrob)
|
||||
PARAM(Solver.DYNAMIC_TS, 1)
|
||||
PARAM(Solver.DYNAMIC_MIN_TIMESTEP, 4e-5)
|
||||
#if (SIMPLIFY_SONAR)
|
||||
PARAM(Solver.Solver_54.DYNAMIC_MIN_TIMESTEP, 7e-6) // gets rid of NR loops failure
|
||||
PARAM(Solver.Solver_54.DYNAMIC_MIN_TIMESTEP, 4e-6) // gets rid of NR loops failure
|
||||
#else
|
||||
PARAM(Solver.Solver_40.DYNAMIC_MIN_TIMESTEP, 7e-6) // gets rid of NR loops failure
|
||||
#if !(ENABLE_SONAR_ALT)
|
||||
PARAM(Solver.Solver_42.DYNAMIC_MIN_TIMESTEP, 6e-6) // gets rid of NR loops failure
|
||||
#endif
|
||||
#endif
|
||||
#else
|
||||
SOLVER(Solver, 48000)
|
||||
@ -145,15 +169,15 @@ NETLIST_START(astrob)
|
||||
ANALOG_INPUT(I_V12, 12)
|
||||
ANALOG_INPUT(I_VM12, -12)
|
||||
|
||||
RES(R1, RES_K(100))
|
||||
RES(R2, RES_K(1.5))
|
||||
RES(R3, RES_K(330))
|
||||
RES(R4, RES_K(10))
|
||||
RES(R1, RES_K(100) * FRND1) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R2, RES_K(1.5) * FRND2) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R3, RES_K(330) * FRND3) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R4, RES_K(10) * FRND4) // part of SONAR circuit that relies on subtle part differences
|
||||
#if (SIMPLIFY_SONAR)
|
||||
// use less resistance to account for only emulating 1/4 identical circuits
|
||||
RES(R5, RES_K(17))
|
||||
RES(R5, RES_K(17)) // part of SONAR circuit that relies on subtle part differences
|
||||
#else
|
||||
RES(R5, RES_K(68))
|
||||
RES(R5, RES_K(68) * FRND5) // part of SONAR circuit that relies on subtle part differences
|
||||
#endif
|
||||
RES(R6, RES_K(68))
|
||||
RES(R7, RES_K(22))
|
||||
@ -185,11 +209,11 @@ NETLIST_START(astrob)
|
||||
RES(R33, RES_K(39))
|
||||
RES(R34, RES_K(4.7))
|
||||
RES(R35, RES_K(4.7))
|
||||
RES(R36, RES_K(100.1)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R37, RES_K(1.51)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R38, RES_K(330.1)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R39, RES_K(10.1)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R40, RES_K(68.1)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R36, RES_K(100) * FRND6) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R37, RES_K(1.5) * FRND7) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R38, RES_K(330) * FRND8) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R39, RES_K(10) * FRND9) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R40, RES_K(68) * FRND10) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R41, RES_K(10))
|
||||
RES(R42, RES_K(100))
|
||||
RES(R43, RES_K(470))
|
||||
@ -211,11 +235,11 @@ NETLIST_START(astrob)
|
||||
RES(R59, RES_K(100))
|
||||
RES(R60, RES_K(10))
|
||||
RES(R61, RES_K(100))
|
||||
RES(R62, RES_K(99.9)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R63, RES_K(1.49)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R64, RES_K(329.9)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R65, RES_K(9.9)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R66, RES_K(67.9)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R62, RES_K(100) * FRND11) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R63, RES_K(1.5) * FRND12) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R64, RES_K(330) * FRND13) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R65, RES_K(10) * FRND14) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R66, RES_K(68) * FRND15) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R67, RES_K(10))
|
||||
RES(R68, RES_K(82))
|
||||
RES(R69, RES_K(470))
|
||||
@ -240,11 +264,11 @@ NETLIST_START(astrob)
|
||||
RES(R88, RES_K(100))
|
||||
RES(R89, RES_K(10))
|
||||
RES(R90, RES_K(100))
|
||||
RES(R91, RES_K(100.2)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R92, RES_K(1.52)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R93, RES_K(330.2)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R94, RES_K(10.2)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R95, RES_K(68.2)) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R91, RES_K(100) * FRND16) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R92, RES_K(1.5) * FRND17) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R93, RES_K(330) * FRND18) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R94, RES_K(10) * FRND19) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R95, RES_K(68) * FRND20) // part of SONAR circuit that relies on subtle part differences
|
||||
RES(R96, RES_K(10))
|
||||
RES(R97, RES_K(4.7))
|
||||
RES(R98, RES_M(1))
|
||||
@ -464,6 +488,17 @@ NETLIST_START(astrob)
|
||||
Q_2N4403(Q10)
|
||||
|
||||
TL084_DIP(U1) // Op. Amp.
|
||||
#if (ENABLE_SONAR_ALT)
|
||||
// Oscillators are of order 1kHz. No need to to have UGF in MHz range
|
||||
PARAM(U1.A.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U1.B.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U1.C.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U1.D.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U2.A.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U2.B.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U2.C.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
PARAM(U2.D.MODEL, "TL084(TYPE=3 UGF=10k)")
|
||||
#endif
|
||||
NET_C(U1.4, I_V12)
|
||||
NET_C(U1.11, I_VM12)
|
||||
|
||||
@ -656,6 +691,12 @@ NETLIST_START(astrob)
|
||||
NET_C(C40.2, R93.1, U2.9)
|
||||
NET_C(U2.10, GND)
|
||||
|
||||
#if (ENABLE_SONAR_ALT)
|
||||
OPTIMIZE_FRONTIER(R5.2, RES_K(68), 192)
|
||||
OPTIMIZE_FRONTIER(R40.2, RES_K(68), 192)
|
||||
OPTIMIZE_FRONTIER(R95.2, RES_K(68), 192)
|
||||
OPTIMIZE_FRONTIER(R66.2, RES_K(68), 192)
|
||||
#endif
|
||||
NET_C(R5.1, R40.1, R114.1, Q3.B, R95.1, R66.1)
|
||||
#endif
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user