mirror of
https://github.com/holub/mame
synced 2025-06-06 21:03:47 +03:00
slapstic: Add forgotten part of save state management
This commit is contained in:
parent
f4f9a3284b
commit
936714beda
@ -211,6 +211,7 @@ atari_slapstic_device::atari_slapstic_device(const machine_config &mconfig, cons
|
||||
m_start(0),
|
||||
m_end(0),
|
||||
m_mirror(0),
|
||||
m_saved_state(S_IDLE),
|
||||
m_current_bank(0),
|
||||
m_loaded_bank(0)
|
||||
{
|
||||
@ -1255,3 +1256,42 @@ void atari_slapstic_device::add_set::test(offs_t addr) const
|
||||
m_sl->m_state = m_sl->m_s_alt_commit.get();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// state saving management
|
||||
|
||||
void atari_slapstic_device::device_pre_save()
|
||||
{
|
||||
m_saved_state = m_state->state_id();
|
||||
}
|
||||
|
||||
u8 atari_slapstic_device::idle ::state_id() const { return S_IDLE; }
|
||||
u8 atari_slapstic_device::active_101_102 ::state_id() const { return S_ACTIVE; }
|
||||
u8 atari_slapstic_device::active_103_110 ::state_id() const { return S_ACTIVE; }
|
||||
u8 atari_slapstic_device::active_111_118 ::state_id() const { return S_ACTIVE; }
|
||||
u8 atari_slapstic_device::alt_valid_101_102 ::state_id() const { return S_ALT_VALID; }
|
||||
u8 atari_slapstic_device::alt_valid_103_110 ::state_id() const { return S_ALT_VALID; }
|
||||
u8 atari_slapstic_device::alt_valid_111_118 ::state_id() const { return S_ALT_VALID; }
|
||||
u8 atari_slapstic_device::alt_select_101_110::state_id() const { return S_ALT_SELECT; }
|
||||
u8 atari_slapstic_device::alt_select_111_118::state_id() const { return S_ALT_SELECT; }
|
||||
u8 atari_slapstic_device::alt_commit ::state_id() const { return S_ALT_COMMIT; }
|
||||
u8 atari_slapstic_device::bit_load ::state_id() const { return S_BIT_LOAD; }
|
||||
u8 atari_slapstic_device::bit_set ::state_id() const { return m_is_odd ? S_BIT_SET_ODD : S_BIT_SET_EVEN; }
|
||||
u8 atari_slapstic_device::add_load ::state_id() const { return S_ADD_LOAD; }
|
||||
u8 atari_slapstic_device::add_set ::state_id() const { return S_ADD_SET; }
|
||||
|
||||
void atari_slapstic_device::device_post_load()
|
||||
{
|
||||
switch(m_saved_state) {
|
||||
case S_IDLE: m_state = m_s_idle.get(); break;
|
||||
case S_ACTIVE: m_state = m_s_active.get(); break;
|
||||
case S_ALT_VALID: m_state = m_s_alt_valid.get(); break;
|
||||
case S_ALT_SELECT: m_state = m_s_alt_select.get(); break;
|
||||
case S_ALT_COMMIT: m_state = m_s_alt_commit.get(); break;
|
||||
case S_BIT_LOAD: m_state = m_s_bit_load.get(); break;
|
||||
case S_BIT_SET_ODD: m_state = m_s_bit_set_odd.get(); break;
|
||||
case S_BIT_SET_EVEN: m_state = m_s_bit_set_even.get(); break;
|
||||
case S_ADD_LOAD: m_state = m_s_add_load.get(); break;
|
||||
case S_ADD_SET: m_state = m_s_add_set.get(); break;
|
||||
}
|
||||
}
|
||||
|
@ -53,6 +53,8 @@ protected:
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
virtual void device_validity_check(validity_checker &valid) const override;
|
||||
virtual void device_pre_save() override;
|
||||
virtual void device_post_load() override;
|
||||
|
||||
private:
|
||||
struct mask_value {
|
||||
@ -135,6 +137,7 @@ private:
|
||||
virtual ~state() = default;
|
||||
|
||||
virtual void test(offs_t addr) const = 0;
|
||||
virtual u8 state_id() const = 0;
|
||||
};
|
||||
|
||||
struct idle : public state {
|
||||
@ -142,6 +145,7 @@ private:
|
||||
|
||||
idle(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct active_101_102 : public state {
|
||||
@ -149,6 +153,7 @@ private:
|
||||
|
||||
active_101_102(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct active_103_110 : public state {
|
||||
@ -156,6 +161,7 @@ private:
|
||||
|
||||
active_103_110(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct active_111_118 : public state {
|
||||
@ -163,6 +169,7 @@ private:
|
||||
|
||||
active_111_118(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_valid_101_102 : public state {
|
||||
@ -170,6 +177,7 @@ private:
|
||||
|
||||
alt_valid_101_102(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_valid_103_110 : public state {
|
||||
@ -177,6 +185,7 @@ private:
|
||||
|
||||
alt_valid_103_110(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_valid_111_118 : public state {
|
||||
@ -184,6 +193,7 @@ private:
|
||||
|
||||
alt_valid_111_118(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_select_101_110 : public state {
|
||||
@ -192,6 +202,7 @@ private:
|
||||
|
||||
alt_select_101_110(atari_slapstic_device *sl, const checker &check, const slapstic_data *data, int shift);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_select_111_118 : public state {
|
||||
@ -200,6 +211,7 @@ private:
|
||||
|
||||
alt_select_111_118(atari_slapstic_device *sl, const checker &check, const slapstic_data *data, int shift);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct alt_commit : public state {
|
||||
@ -207,6 +219,7 @@ private:
|
||||
|
||||
alt_commit(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct bit_load : public state {
|
||||
@ -214,6 +227,7 @@ private:
|
||||
|
||||
bit_load(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct bit_set : public state {
|
||||
@ -222,6 +236,7 @@ private:
|
||||
|
||||
bit_set(atari_slapstic_device *sl, const checker &check, const slapstic_data *data, bool odd);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct add_load : public state {
|
||||
@ -229,6 +244,7 @@ private:
|
||||
|
||||
add_load(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
struct add_set : public state {
|
||||
@ -236,6 +252,7 @@ private:
|
||||
|
||||
add_set(atari_slapstic_device *sl, const checker &check, const slapstic_data *data);
|
||||
virtual void test(offs_t addr) const override;
|
||||
virtual u8 state_id() const override;
|
||||
};
|
||||
|
||||
|
||||
@ -263,6 +280,9 @@ private:
|
||||
|
||||
const state *m_state;
|
||||
|
||||
enum { S_IDLE, S_ACTIVE, S_ALT_VALID, S_ALT_SELECT, S_ALT_COMMIT, S_BIT_LOAD, S_BIT_SET_ODD, S_BIT_SET_EVEN, S_ADD_LOAD, S_ADD_SET };
|
||||
u8 m_saved_state;
|
||||
|
||||
u8 m_current_bank;
|
||||
u8 m_loaded_bank;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user