gba gpu view: bring to front when loading a widget. gba: put dma in tracelog. disable display of sprites with shape = 3. fixes gobbelygook in F-Zero Climax (J). not sure if this is actually what hardware does, as the broken sprite data is from a different ambiguous situation.
This commit is contained in:
parent
c1f9a131d5
commit
20d9e726d2
|
@ -672,7 +672,9 @@ namespace BizHawk.MultiClient.GBAtools
|
|||
{
|
||||
if (listBoxWidgets.SelectedItem != null)
|
||||
{
|
||||
(listBoxWidgets.SelectedItem as MobileBmpView).Show();
|
||||
var mbv = listBoxWidgets.SelectedItem as MobileBmpView;
|
||||
mbv.Show();
|
||||
mbv.BringToFront();
|
||||
listBoxWidgets.Items.RemoveAt(listBoxWidgets.SelectedIndex);
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
|
@ -21,6 +21,7 @@
|
|||
#include "ameteor.hpp"
|
||||
|
||||
#include "debug.hpp"
|
||||
#include <sstream>
|
||||
|
||||
namespace AMeteor
|
||||
{
|
||||
|
@ -152,6 +153,15 @@ namespace AMeteor
|
|||
<< " to " << IOS_ADD << chan.dest
|
||||
<< " of " << IOS_NOR << (chan.count ? chan.count : 0x10000)
|
||||
<< (chan.control.b.type ? " words" : " halfwords"));
|
||||
if (traceenabled)
|
||||
{
|
||||
std::stringstream ss;
|
||||
ss << "DMA" << IOS_NOR << (int)channum << ", from " << IOS_ADD << chan.src
|
||||
<< " to " << IOS_ADD << chan.dest
|
||||
<< " of " << IOS_NOR << (chan.count ? chan.count : 0x10000)
|
||||
<< (chan.control.b.type ? " words" : " halfwords");
|
||||
trace_bizhawk(ss.str());
|
||||
}
|
||||
#if 0
|
||||
if (channum == 3 && (chan.dest >> 24) == 0x0D || (chan.src >> 24) == 0x0D)
|
||||
{
|
||||
|
|
|
@ -55,6 +55,10 @@ namespace AMeteor
|
|||
if (m_attr0 & (0x1 << 9) || ((m_attr0 >> 10) & 0x3) == 2)
|
||||
return;
|
||||
|
||||
// don't draw sprites with "prohibited" size
|
||||
if (m_width == 0)
|
||||
return;
|
||||
|
||||
int16_t yoff = (m_attr0 & 0xFF);
|
||||
if (yoff > Screen::HEIGHT)
|
||||
yoff -= 256;
|
||||
|
@ -253,6 +257,10 @@ namespace AMeteor
|
|||
if (((m_attr0 >> 10) & 0x3) == 2)
|
||||
return;
|
||||
|
||||
// don't draw sprites with "prohibited" size
|
||||
if (m_width == 0)
|
||||
return;
|
||||
|
||||
int16_t yoff = (m_attr0 & 0xFF);
|
||||
if (yoff > Screen::HEIGHT)
|
||||
yoff -= 256;
|
||||
|
@ -407,6 +415,10 @@ namespace AMeteor
|
|||
if (m_attr0 & (0x1 << 9) || ((m_attr0 >> 10) & 0x3) != 2)
|
||||
return;
|
||||
|
||||
// don't draw sprites with "prohibited" size
|
||||
if (m_width == 0)
|
||||
return;
|
||||
|
||||
int16_t yoff = (m_attr0 & 0xFF);
|
||||
if (yoff > Screen::HEIGHT)
|
||||
yoff -= 256;
|
||||
|
@ -497,6 +509,10 @@ namespace AMeteor
|
|||
// if it's not an obj window
|
||||
if (((m_attr0 >> 10) & 0x3) != 2)
|
||||
return;
|
||||
|
||||
// don't draw sprites with "prohibited" size
|
||||
if (m_width == 0)
|
||||
return;
|
||||
|
||||
int16_t yoff = (m_attr0 & 0xFF);
|
||||
if (yoff > Screen::HEIGHT)
|
||||
|
@ -662,15 +678,17 @@ namespace AMeteor
|
|||
|
||||
inline void Object::SetSize ()
|
||||
{
|
||||
static const uint8_t Width[3][4] = {
|
||||
static const uint8_t Width[4][4] = {
|
||||
{1, 2, 4, 8}, // Square
|
||||
{2, 4, 4, 8}, // Horizontal
|
||||
{1, 1, 2, 4} // Vertical
|
||||
{1, 1, 2, 4}, // Vertical
|
||||
{0, 0, 0, 0} // Prohibited
|
||||
};
|
||||
static const uint8_t Height[3][4] = {
|
||||
static const uint8_t Height[4][4] = {
|
||||
{1, 2, 4, 8}, // Square
|
||||
{1, 1, 2, 4}, // Horizontal
|
||||
{2, 4, 4, 8} // Vertical
|
||||
{2, 4, 4, 8}, // Vertical
|
||||
{0, 0, 0, 0} // Prohibited
|
||||
};
|
||||
|
||||
m_width = Width[m_attr0 >> 14][m_attr1 >> 14];
|
||||
|
|
|
@ -93,6 +93,8 @@ namespace AMeteor
|
|||
}
|
||||
else // no vcount match
|
||||
dispstat &= ~(uint16_t)0x4;
|
||||
// scanline callback for frontend
|
||||
// ...
|
||||
}
|
||||
else // if we were not H-Blanking
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue