xbox_nv2a: better fix for dangling pointer warning,

coleco: remove romhacked bios rom
This commit is contained in:
hap 2023-06-14 15:43:29 +02:00
parent bd166709fb
commit e3d45954ad
7 changed files with 37 additions and 57 deletions

View File

@ -190,8 +190,8 @@ namespace plib
FT v2; FT v2;
do do
{ {
v1 = normalize_uniform(p, constants<FT>::two(), constants<FT>::one()); // [-1..1[ v1 = normalize_uniform(p, constants<FT>::two(), constants<FT>::one()); // [-1..1]
v2 = normalize_uniform(p, constants<FT>::two(), constants<FT>::one()); // [-1..1[ v2 = normalize_uniform(p, constants<FT>::two(), constants<FT>::one()); // [-1..1]
s = v1 * v1 + v2 * v2; s = v1 * v1 + v2 * v2;
} while (s >= constants<FT>::one()); } while (s >= constants<FT>::one());
if (s == constants<FT>::zero()) if (s == constants<FT>::zero())

View File

@ -663,11 +663,7 @@ void coleco_state::dina(machine_config &config)
ROM_START (coleco) ROM_START (coleco)
ROM_REGION( 0x10000, "maincpu", 0 ) ROM_REGION( 0x10000, "maincpu", 0 )
ROM_SYSTEM_BIOS( 0, "original", "Original" ) ROM_LOAD( "313_10031-4005_73108a.u2", 0x0000, 0x2000, CRC(3aa93ef3) SHA1(45bedc4cbdeac66c7df59e9e599195c778d86a92) )
ROMX_LOAD( "313 10031-4005 73108a.u2", 0x0000, 0x2000, CRC(3aa93ef3) SHA1(45bedc4cbdeac66c7df59e9e599195c778d86a92), ROM_BIOS(0) )
ROM_SYSTEM_BIOS( 1, "thick", "Thick characters" )
// differences to 0x3aa93ef3 modified characters, added a pad 2 related fix
ROMX_LOAD( "colecoa.rom", 0x0000, 0x2000, CRC(39bb16fc) SHA1(99ba9be24ada3e86e5c17aeecb7a2d68c5edfe59), ROM_BIOS(1) )
ROM_END ROM_END
/* ONYX (Prototype) /* ONYX (Prototype)

View File

@ -418,19 +418,19 @@ INPUT_CHANGED_MEMBER(esripsys_state::coin_interrupt)
static INPUT_PORTS_START( turbosub ) static INPUT_PORTS_START( turbosub )
PORT_START("KEYPAD_A") PORT_START("KEYPAD_A")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Keypad 0") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Keypad 0") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Keypad 1") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Keypad 1") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Keypad 2") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Keypad 2") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Keypad 3") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Keypad 3") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Keypad 4") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Keypad 4") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Keypad 5") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Keypad 5") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_START("KEYPAD_B") PORT_START("KEYPAD_B")
PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Keypad 6") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Keypad 6") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Keypad 7") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Keypad 7") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Keypad 8") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Keypad 8") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Keypad 9") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Keypad 9") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("Keypad *") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0) PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_KEYPAD ) PORT_CODE(KEYCODE_ASTERISK) PORT_NAME("Keypad *") PORT_CHANGED_MEMBER(DEVICE_SELF, esripsys_state,keypad_interrupt, 0)
PORT_START("COINS") PORT_START("COINS")
PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_BIT( 0x0f, IP_ACTIVE_HIGH, IPT_UNUSED )

View File

@ -660,6 +660,8 @@ void vertex_program_simulator::process(int address, vertex_nv *in, vertex_nv *ou
output++; output++;
count--; count--;
} }
input = nullptr;
output = nullptr;
} }
int vertex_program_simulator::status() int vertex_program_simulator::status()
@ -2512,25 +2514,7 @@ void nv2a_renderer::compute_supersample_factors(float &horizontal, float &vertic
void nv2a_renderer::convert_vertices(vertex_nv *source, nv2avertex_t *destination) void nv2a_renderer::convert_vertices(vertex_nv *source, nv2avertex_t *destination)
{ {
/* vertex_nv vert;
FIXME: GCC 13.1 errored this without the static on "vert". I believe this is a real bug, but I don't
know enough about what this code is doing to be confident.
In member function void vertex_program_simulator::set_data(vertex_nv*, vertex_nv*),
inlined from void vertex_program_simulator::process(int, vertex_nv*, vertex_nv*, int) at ../../../../../src/mame/shared/xbox_nv2a.cpp:643:10,
inlined from void nv2a_renderer::convert_vertices(vertex_nv*, nv2avertex_t*) at ../../../../../src/mame/shared/xbox_nv2a.cpp:2546:29:
../../../../../src/mame/shared/xbox_nv2a.cpp:449:16: error: storing the address of local variable vert in *&this_144(D)->vertexprogram.exec.vertex_program_simulator::output [-Werror=dangling-pointer=]
449 | output = out;
| ~~~~~~~^~~~~
../../../../../src/mame/shared/xbox_nv2a.cpp: In member function void nv2a_renderer::convert_vertices(vertex_nv*, nv2avertex_t*):
../../../../../src/mame/shared/xbox_nv2a.cpp:2504:19: note: vert declared here
2522 | vertex_nv vert;
| ^~~~
../../../../../src/mame/shared/xbox_nv2a.cpp:2502:82: note: this declared here
2502 | void nv2a_renderer::convert_vertices(vertex_nv *source, nv2avertex_t *destination)
| ^
*/
static vertex_nv vert;
int u; int u;
float v[4]; float v[4];
double c; double c;

View File

@ -56,10 +56,10 @@ protected:
required_device<screen_device> m_screen; required_device<screen_device> m_screen;
required_device<cpu_device> m_soundcpu; required_device<cpu_device> m_soundcpu;
uint8_t m_vram_bank_mask; uint8_t m_vram_bank_mask = 0;
int m_robokid_sprites; int m_robokid_sprites = 0;
bool (*m_stencil_compare_function) (uint16_t pal); bool (*m_stencil_compare_function) (uint16_t pal);
int m_sprites_updated; int m_sprites_updated = 0;
tilemap_t* m_fg_tilemap; tilemap_t* m_fg_tilemap;
tilemap_t* m_bg_tilemap; tilemap_t* m_bg_tilemap;
bitmap_ind16 m_sprites_bitmap; bitmap_ind16 m_sprites_bitmap;
@ -96,8 +96,8 @@ private:
required_memory_bank m_mainbank; required_memory_bank m_mainbank;
std::unique_ptr<int16_t[]> m_sampledata; std::unique_ptr<int16_t[]> m_sampledata;
int m_next_sprite_overdraw_enabled; int m_next_sprite_overdraw_enabled = 0;
uint8_t m_rom_bank_mask; uint8_t m_rom_bank_mask = 0;
void draw_sprites( bitmap_ind16 &bitmap); void draw_sprites( bitmap_ind16 &bitmap);
void erase_sprites( bitmap_ind16 &bitmap); void erase_sprites( bitmap_ind16 &bitmap);
@ -145,7 +145,7 @@ protected:
template<int Layer> void robokid_bg_videoram_w(offs_t offset, uint8_t data); template<int Layer> void robokid_bg_videoram_w(offs_t offset, uint8_t data);
template<int Layer> void robokid_bg_ctrl_w(offs_t offset, uint8_t data); template<int Layer> void robokid_bg_ctrl_w(offs_t offset, uint8_t data);
template<int Layer> void robokid_bg_bank_w(uint8_t data); template<int Layer> void robokid_bg_bank_w(uint8_t data);
tilemap_t* m_robokid_tilemap[3]{}; tilemap_t* m_robokid_tilemap[3];
void video_init_banked(uint32_t vram_alloc_size); void video_init_banked(uint32_t vram_alloc_size);
TILEMAP_MAPPER_MEMBER(robokid_bg_scan); TILEMAP_MAPPER_MEMBER(robokid_bg_scan);
@ -160,7 +160,7 @@ private:
uint32_t screen_update_robokid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_robokid(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
void motion_error_kludge(uint16_t offset); void motion_error_kludge(uint16_t offset);
uint8_t m_robokid_bg_bank[3]; uint8_t m_robokid_bg_bank[3] = { };
std::unique_ptr<uint8_t[]> m_robokid_bg_videoram[3]; std::unique_ptr<uint8_t[]> m_robokid_bg_videoram[3];
}; };
@ -196,7 +196,7 @@ private:
void io_protection_start(); void io_protection_start();
void io_protection_reset(); void io_protection_reset();
uint8_t m_io_protection[3]; uint8_t m_io_protection[3] = { };
uint8_t m_io_protection_input = 0; uint8_t m_io_protection_input = 0;
int m_io_protection_tick = 0; int m_io_protection_tick = 0;
}; };

View File

@ -2,7 +2,7 @@
// copyright-holders:Uki // copyright-holders:Uki
/***************************************************************************** /*****************************************************************************
XX Mission (c) 1986 UPL XX Mission (c) 1986 UPL
Driver by Uki Driver by Uki
@ -59,10 +59,10 @@ private:
tilemap_t *m_bg_tilemap; tilemap_t *m_bg_tilemap;
tilemap_t *m_fg_tilemap; tilemap_t *m_fg_tilemap;
uint8_t m_status; uint8_t m_status = 0;
uint8_t m_xscroll; uint8_t m_xscroll = 0;
uint8_t m_yscroll; uint8_t m_yscroll = 0;
uint8_t m_flipscreen; uint8_t m_flipscreen = 0;
void bank_sel_w(uint8_t data); void bank_sel_w(uint8_t data);
void status_m_w(uint8_t data); void status_m_w(uint8_t data);

View File

@ -169,8 +169,8 @@ bool stack_walker::s_initialized = false;
// stack_walker - constructor // stack_walker - constructor
//------------------------------------------------- //-------------------------------------------------
stack_walker::stack_walker() stack_walker::stack_walker() :
: m_process(GetCurrentProcess()), m_process(GetCurrentProcess()),
m_thread(GetCurrentThread()), m_thread(GetCurrentThread()),
m_first(true) m_first(true)
{ {
@ -289,8 +289,8 @@ bool stack_walker::unwind()
// symbol_manager - constructor // symbol_manager - constructor
//------------------------------------------------- //-------------------------------------------------
symbol_manager::symbol_manager(const char *argv0) symbol_manager::symbol_manager(const char *argv0) :
: m_mapfile(argv0), m_mapfile(argv0),
m_symfile(argv0), m_symfile(argv0),
m_process(GetCurrentProcess()), m_process(GetCurrentProcess()),
m_last_base(0), m_last_base(0),
@ -300,7 +300,7 @@ symbol_manager::symbol_manager(const char *argv0)
// compute the name of the mapfile // compute the name of the mapfile
int extoffs = m_mapfile.find_last_of('.'); int extoffs = m_mapfile.find_last_of('.');
if (extoffs != -1) if (extoffs != -1)
m_mapfile.substr(0, extoffs); m_mapfile = m_mapfile.substr(0, extoffs);
m_mapfile.append(".map"); m_mapfile.append(".map");
// and the name of the symfile // and the name of the symfile
@ -653,8 +653,8 @@ uintptr_t symbol_manager::get_text_section_base(ULONG &size)
// sampling_profiler - constructor // sampling_profiler - constructor
//------------------------------------------------- //-------------------------------------------------
sampling_profiler::sampling_profiler(uint32_t max_seconds, uint8_t stack_depth = 0) sampling_profiler::sampling_profiler(uint32_t max_seconds, uint8_t stack_depth = 0) :
: m_target_thread(nullptr), m_target_thread(nullptr),
m_thread(nullptr), m_thread(nullptr),
m_thread_id(0), m_thread_id(0),
m_thread_exit(false), m_thread_exit(false),