updates
This commit is contained in:
@@ -67,6 +67,7 @@
|
||||
typedef uint8_t u8;
|
||||
typedef uint16_t u16;
|
||||
|
||||
#define BIT(n) (1u << (n))
|
||||
extern volatile u8 MEM8[0x10000];
|
||||
|
||||
#define SCI1_SCR MEM8[0xFEDAu]
|
||||
@@ -193,6 +194,28 @@ extern volatile u8 MEM8[0x10000];
|
||||
* evidence: H'1A09, H'1A71, H'3F90, H'407F, H'BB35, H'BC79, H'BC99, H'BD1E
|
||||
* - flag_table_candidate at H'EC00 (bit_flags); observed write
|
||||
* evidence: H'4088, H'BC82, H'BC9D, H'BD22, H'BD39, H'BDE9
|
||||
* panel selector semantics:
|
||||
* - 0x0013 slave_and_iris_mblack_link_lamps: Selector 0x0013 is a two-bit lamp/status word. ROM dispatch H'2E06 reads current table word H'E826 and fans bit 15 and bit 14 into panel latch RAM.
|
||||
* current word: H'E826; dispatch: H'2E06
|
||||
* 0x8000 -> SLAVE lamp: sets F791.6 and F713.4; RAM F791.6, F713.4
|
||||
* 0x4000 -> IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7; RAM F791.5, F716.7
|
||||
* observed values: 0x8000 SLAVE lamp on; 0x4000 IRIS/M.BLACK LINK lamp on; 0x0000 SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06
|
||||
* state machine: iris_mblack_link_closed_loop_state_candidate: Bench-proven closed loop: the RCP reports local IRIS/M.BLACK LINK intent, the CCU ACKs selector 0x0013, then the CCU mirrors the accepted selector state back with command 0. The mirrored state controls the next toggle direction.
|
||||
* frames: active report 00 00 13 40 00 09; clear report 00 00 13 00 00 49; ACK 05 00 13 00 00 4C; mirror active 00 00 13 40 00 09; mirror clear 00 00 13 00 00 49
|
||||
* local trigger candidates: provisional_iris_mblack_link_button_toggle_report F006.7 / F6DB.7: When F6DB.7 is asserted and F731 <= 3, the ROM toggles current-table bit 14 at H'E826 based on F791.5, then queues selector 0x0013 through loc_3E54.; H'1FE8/H'1FFB: Adjacent local helpers set or clear current-table bit 15 at H'E826 and queue selector 0x0013.
|
||||
* evidence: bench: 00 00 13 80 00 C9 lights far-right SLAVE lamp, bench: 00 00 13 40 00 09 lights IRIS/M.BLACK LINK lamp, ROM: H'2E06-H'2E32 tests H'E826 bits 15/14 and sets/clears F791/F713/F716 latch bits
|
||||
* - 0x0024 lcd_selector_button_lamp: Bench-visible LCD selector-button lamp lane.
|
||||
* current word: H'E848; dispatch: dispatch unknown
|
||||
* observed values: 0x8000 LCD selector-button lamp visible; 0x0000 lamp remained visible at 0.5 s in isolation run
|
||||
* - 0x0082 iris_readout_lane: Bench-visible IRIS seven-segment/display lane.
|
||||
* current word: H'E904; dispatch: dispatch unknown
|
||||
* observed values: 0x8000 IRIS display OP; 0x4000 IRIS display 1.4; 0x0000 IRIS display blank
|
||||
* - 0x0083 combined_iris_shutter_master_gain_status_lane: Bench-visible combined status/readout lane; clear behavior appears latched or copied elsewhere.
|
||||
* current word: H'E906; dispatch: dispatch unknown
|
||||
* observed values: 0x8000 IRIS AUTO, SHUTTER OFF, MASTER GAIN -3; 0x0000 same visible state remained at 0.5 s
|
||||
* - 0x0093 white_balance_black_flare_mode_lane: Bench-visible white-balance and black/flare lamp lane.
|
||||
* current word: H'E926; dispatch: dispatch unknown
|
||||
* observed values: 0x8000 BLACK/FLARE MANUAL plus white-balance PRESET; 0x4000 BLACK/FLARE MANUAL plus white-balance AUTO; 0x2000 BLACK/FLARE MANUAL plus white-balance MANUAL; 0x0000 BLACK/FLARE MANUAL plus white-balance MANUAL
|
||||
* state variable candidates:
|
||||
* - event_queue_read_cursor_candidate H'F9B4: reads 1, writes 2; bits 5
|
||||
* evidence: H'BE78, H'BE95, H'BE99
|
||||
@@ -357,12 +380,110 @@ void frt2_ocia_candidate_tick_isr(void)
|
||||
|
||||
}
|
||||
|
||||
static void sci1_candidate_panel_selector_annotation(u16 logical_index, u16 value)
|
||||
{
|
||||
/* Known bench/ROM selector labels. This helper is commentary for the decompile. */
|
||||
switch (logical_index) {
|
||||
case 0x0013u:
|
||||
/* 0x0013 slave_and_iris_mblack_link_lamps; current word H'E826; H'2E06. */
|
||||
if ((value & 0x8000u) != 0u) {
|
||||
/* SLAVE lamp: sets F791.6 and F713.4. */
|
||||
} else {
|
||||
/* SLAVE lamp: clears F791.6 and F713.4. */
|
||||
}
|
||||
if ((value & 0x4000u) != 0u) {
|
||||
/* IRIS/M.BLACK LINK lamp: sets F791.5 and F716.7. */
|
||||
} else {
|
||||
/* IRIS/M.BLACK LINK lamp: clears F791.5 and F716.7. */
|
||||
}
|
||||
if (value == 0x8000u) {
|
||||
/* SLAVE lamp on. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* IRIS/M.BLACK LINK lamp on. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* SLAVE and IRIS/M.BLACK LINK latch bits clear through H'2E06. */
|
||||
}
|
||||
break;
|
||||
case 0x0024u:
|
||||
/* 0x0024 lcd_selector_button_lamp; current word H'E848; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* LCD selector-button lamp visible. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* lamp remained visible at 0.5 s in isolation run. */
|
||||
}
|
||||
break;
|
||||
case 0x0082u:
|
||||
/* 0x0082 iris_readout_lane; current word H'E904; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* IRIS display OP. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* IRIS display 1.4. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* IRIS display blank. */
|
||||
}
|
||||
break;
|
||||
case 0x0083u:
|
||||
/* 0x0083 combined_iris_shutter_master_gain_status_lane; current word H'E906; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* IRIS AUTO, SHUTTER OFF, MASTER GAIN -3. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* same visible state remained at 0.5 s. */
|
||||
}
|
||||
break;
|
||||
case 0x0093u:
|
||||
/* 0x0093 white_balance_black_flare_mode_lane; current word H'E926; dispatch unknown. */
|
||||
if (value == 0x8000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance PRESET. */
|
||||
}
|
||||
if (value == 0x4000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance AUTO. */
|
||||
}
|
||||
if (value == 0x2000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
|
||||
}
|
||||
if (value == 0x0000u) {
|
||||
/* BLACK/FLARE MANUAL plus white-balance MANUAL. */
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void provisional_iris_mblack_link_button_toggle_report(void)
|
||||
{
|
||||
/* Provisional name for ROM H'200E: When F6DB.7 is asserted and F731 <= 3, the ROM toggles current-table bit 14 at H'E826 based on F791.5, then queues selector 0x0013 through loc_3E54. */
|
||||
/* Source F006.7 / F6DB.7; gate F731 <= 3; current state F791.5. */
|
||||
if ((MEM8[0xF6DBu] & BIT(7)) == 0u) {
|
||||
return;
|
||||
}
|
||||
if (MEM8[0xF731u] > 3u) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((MEM8[0xF791u] & BIT(5)) == 0u) {
|
||||
/* Requests selector 0x0013=0x4000: 00 00 13 40 00 09. */
|
||||
/* CCU should ACK 05 00 13 00 00 4C, then mirror 00 00 13 40 00 09. */
|
||||
} else {
|
||||
/* Requests selector 0x0013=0x0000: 00 00 13 00 00 49. */
|
||||
/* CCU should ACK 05 00 13 00 00 4C, then mirror 00 00 13 00 00 49. */
|
||||
}
|
||||
}
|
||||
|
||||
void sci1_process_candidate_protocol_command(void)
|
||||
{
|
||||
u8 command = sci1_rx_candidate_command();
|
||||
u16 logical_index = sci1_rx_candidate_logical_index();
|
||||
u16 value = sci1_rx_candidate_value();
|
||||
|
||||
sci1_candidate_panel_selector_annotation(logical_index, value);
|
||||
|
||||
bool session_active = MEM8[0xFAA2u] != 0u;
|
||||
|
||||
if (!session_active) {
|
||||
|
||||
Reference in New Issue
Block a user