106 lines
3.0 KiB
C++
106 lines
3.0 KiB
C++
//---------------------------------------------------------------------------
|
|
// NEOPOP : Emulator as in Dreamland
|
|
//
|
|
// Copyright (c) 2001-2002 by neopop_uk
|
|
//---------------------------------------------------------------------------
|
|
|
|
//---------------------------------------------------------------------------
|
|
// This program is free software; you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation; either version 2 of the License, or
|
|
// (at your option) any later version. See also the license.txt file for
|
|
// additional informations.
|
|
//---------------------------------------------------------------------------
|
|
|
|
#ifndef __NEOPOP_GFX__
|
|
#define __NEOPOP_GFX__
|
|
//=============================================================================
|
|
|
|
namespace MDFN_IEN_NGP
|
|
{
|
|
|
|
#define ZDEPTH_BACK_SPRITE 2
|
|
#define ZDEPTH_BACKGROUND_SCROLL 3
|
|
#define ZDEPTH_MIDDLE_SPRITE 4
|
|
#define ZDEPTH_FOREGROUND_SCROLL 5
|
|
#define ZDEPTH_FRONT_SPRITE 6
|
|
|
|
class NGPGFX_CLASS
|
|
{
|
|
public:
|
|
NGPGFX_CLASS()
|
|
MDFN_COLD;
|
|
~NGPGFX_CLASS() MDFN_COLD;
|
|
|
|
void write8(uint32 address, uint8 data);
|
|
void write16(uint32 address, uint16 data);
|
|
|
|
uint8 read8(uint32 address);
|
|
uint16 read16(uint32 address);
|
|
|
|
void SetLayerEnableMask(uint64 mask);
|
|
|
|
bool draw(MDFN_Surface *surface, bool skip);
|
|
bool hint(void);
|
|
|
|
void power(void);
|
|
|
|
private:
|
|
// TODO: Alignment for faster memset
|
|
uint8 zbuffer[256]; // __attribute__ ((aligned (8))); //Line z-buffer
|
|
uint16 cfb_scanline[256]; // __attribute__ ((aligned (8)));
|
|
|
|
uint8 winx, winw;
|
|
uint8 winy, winh;
|
|
uint8 scroll1x, scroll1y;
|
|
uint8 scroll2x, scroll2y;
|
|
uint8 scrollsprx, scrollspry;
|
|
uint8 planeSwap;
|
|
uint8 bgc, oowc, negative;
|
|
|
|
void reset(void);
|
|
void delayed_settings(void);
|
|
|
|
void draw_scanline_colour(int, int);
|
|
void drawColourPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror,
|
|
uint16 *palette_ptr, uint8 pal, uint8 depth);
|
|
void draw_colour_scroll1(uint8 depth, int ngpc_scanline);
|
|
void draw_colour_scroll2(uint8 depth, int ngpc_scanline);
|
|
|
|
void draw_scanline_mono(int, int);
|
|
void MonoPlot(uint8 x, uint8 *palette_ptr, uint16 pal_hi, uint8 index, uint8 depth);
|
|
void drawMonoPattern(uint8 screenx, uint16 tile, uint8 tiley, uint16 mirror,
|
|
uint8 *palette_ptr, uint16 pal, uint8 depth);
|
|
void draw_mono_scroll1(uint8 depth, int ngpc_scanline);
|
|
void draw_mono_scroll2(uint8 depth, int ngpc_scanline);
|
|
|
|
uint8 ScrollVRAM[4096]; // 9000-9fff
|
|
uint8 CharacterRAM[8192]; // a000-bfff
|
|
uint8 SpriteVRAM[256]; // 8800-88ff
|
|
uint8 SpriteVRAMColor[0x40]; // 8C00-8C3F
|
|
uint8 ColorPaletteRAM[0x200]; // 8200-83ff
|
|
|
|
uint8 SPPLT[6];
|
|
uint8 SCRP1PLT[6];
|
|
uint8 SCRP2PLT[6];
|
|
|
|
uint8 raster_line;
|
|
uint8 S1SO_H, S1SO_V, S2SO_H, S2SO_V;
|
|
uint8 WBA_H, WBA_V, WSI_H, WSI_V;
|
|
bool C_OVR, BLNK;
|
|
uint8 PO_H, PO_V;
|
|
uint8 P_F;
|
|
uint8 BG_COL;
|
|
uint8 CONTROL_2D;
|
|
uint8 CONTROL_INT;
|
|
uint8 SCREEN_PERIOD;
|
|
uint8 K2GE_MODE;
|
|
|
|
uint32 ColorMap[4096];
|
|
|
|
int layer_enable_setting;
|
|
};
|
|
}
|
|
|
|
#endif
|