yaze
0.2.0
Link to the Past ROM Editor
Loading...
Searching...
No Matches
title_screen.cc
Go to the documentation of this file.
1
#include "
title_screen.h
"
2
3
#include <cstdint>
4
5
#include "
app/gfx/bitmap.h
"
6
#include "
app/gfx/snes_tile.h
"
7
#include "
app/rom.h
"
8
9
namespace
yaze
{
10
namespace
app {
11
namespace
zelda3 {
12
namespace
screen {
13
14
void
TitleScreen::Create
() {
15
tiles8Bitmap
.
Create
(128, 512, 8, std::vector<uint8_t>(0x20000));
16
tilesBG1Bitmap
.
Create
(256, 256, 8, std::vector<uint8_t>(0x80000));
17
tilesBG2Bitmap
.
Create
(256, 256, 8, std::vector<uint8_t>(0x80000));
18
oamBGBitmap
.
Create
(256, 256, 8, std::vector<uint8_t>(0x80000));
19
BuildTileset
();
20
LoadTitleScreen
();
21
}
22
23
void
TitleScreen::BuildTileset
() {
24
uchar
staticgfx[16] = {0};
25
26
// Main Blocksets
27
28
// TODO: get the gfx from the GFX class rather than the rom.
29
// for (int i = 0; i < 8; i++) {
30
// staticgfx[i] = GfxGroups.mainGfx[titleScreenTilesGFX][i];
31
// }
32
33
staticgfx[8] = 115 + 0;
34
// staticgfx[9] = (GfxGroups.spriteGfx[titleScreenSpritesGFX][3] + 115);
35
staticgfx[10] = 115 + 6;
36
staticgfx[11] = 115 + 7;
37
// staticgfx[12] = (GfxGroups.spriteGfx[titleScreenSpritesGFX][0] + 115);
38
staticgfx[13] = 112;
39
staticgfx[14] = 112;
40
staticgfx[15] = 112;
41
42
// Loaded gfx for the current screen (empty at this point)
43
uchar
* currentmapgfx8Data =
tiles8Bitmap
.
mutable_data
().data();
44
45
// All gfx of the game pack of 2048 bytes (4bpp)
46
uchar
* allgfxData =
nullptr
;
47
for
(
int
i = 0; i < 16; i++) {
48
for
(
int
j = 0; j < 2048; j++) {
49
uchar
mapByte = allgfxData[j + (staticgfx[i] * 2048)];
50
switch
(i) {
51
case
0:
52
case
3:
53
case
4:
54
case
5:
55
mapByte += 0x88;
56
break
;
57
}
58
59
currentmapgfx8Data[(i * 2048) + j] = mapByte;
// Upload used gfx data
60
}
61
}
62
}
63
64
void
TitleScreen::LoadTitleScreen
() {
65
int
pos =
66
(
rom_
[0x138C + 3] << 16) + (
rom_
[0x1383 + 3] << 8) +
rom_
[0x137A + 3];
67
68
for
(
int
i = 0; i < 1024; i++) {
69
tilesBG1Buffer
[i] = 492;
70
tilesBG2Buffer
[i] = 492;
71
}
72
73
pos =
core::SnesToPc
(pos);
74
75
while
((
rom_
[pos] & 0x80) != 0x80) {
76
int
dest_addr = pos;
// $03 and $04
77
pos += 2;
78
short
length = pos;
79
bool
increment64 = (length & 0x8000) == 0x8000;
80
bool
fixsource = (length & 0x4000) == 0x4000;
81
pos += 2;
82
83
length = (short)((length & 0x07FF));
84
85
int
j = 0;
86
int
jj = 0;
87
int
posB = pos;
88
while
(j < (length / 2) + 1) {
89
ushort
tiledata = (
ushort
)pos;
90
if
(dest_addr >= 0x1000) {
91
// destAddr -= 0x1000;
92
if
(dest_addr < 0x2000) {
93
tilesBG1Buffer
[dest_addr - 0x1000] = tiledata;
94
}
95
}
else
{
96
if
(dest_addr < 0x1000) {
97
tilesBG2Buffer
[dest_addr] = tiledata;
98
}
99
}
100
101
if
(increment64) {
102
dest_addr += 32;
103
}
else
{
104
dest_addr++;
105
}
106
107
if
(!fixsource) {
108
pos += 2;
109
}
110
111
jj += 2;
112
j++;
113
}
114
115
if
(fixsource) {
116
pos += 2;
117
}
else
{
118
pos = posB + jj;
119
}
120
}
121
122
pal_selected_
= 2;
123
}
124
125
}
// namespace screen
126
}
// namespace zelda3
127
}
// namespace app
128
}
// namespace yaze
bitmap.h
yaze::app::gfx::Bitmap::Create
void Create(int width, int height, int depth, const std::vector< uint8_t > &data)
Creates a bitmap object with the provided graphical data.
Definition
bitmap.cc:230
yaze::app::gfx::Bitmap::mutable_data
auto & mutable_data()
Definition
bitmap.h:177
yaze::app::zelda3::screen::TitleScreen::rom_
Rom rom_
Definition
title_screen.h:66
yaze::app::zelda3::screen::TitleScreen::oamBGBitmap
gfx::Bitmap oamBGBitmap
Definition
title_screen.h:74
yaze::app::zelda3::screen::TitleScreen::tilesBG1Buffer
ushort tilesBG1Buffer[0x1000]
Definition
title_screen.h:53
yaze::app::zelda3::screen::TitleScreen::tilesBG1Bitmap
gfx::Bitmap tilesBG1Bitmap
Definition
title_screen.h:72
yaze::app::zelda3::screen::TitleScreen::tilesBG2Bitmap
gfx::Bitmap tilesBG2Bitmap
Definition
title_screen.h:73
yaze::app::zelda3::screen::TitleScreen::tilesBG2Buffer
ushort tilesBG2Buffer[0x1000]
Definition
title_screen.h:54
yaze::app::zelda3::screen::TitleScreen::tiles8Bitmap
gfx::Bitmap tiles8Bitmap
Definition
title_screen.h:75
yaze::app::zelda3::screen::TitleScreen::LoadTitleScreen
void LoadTitleScreen()
Definition
title_screen.cc:64
yaze::app::zelda3::screen::TitleScreen::pal_selected_
int pal_selected_
Definition
title_screen.h:45
yaze::app::zelda3::screen::TitleScreen::Create
void Create()
Definition
title_screen.cc:14
yaze::app::zelda3::screen::TitleScreen::BuildTileset
void BuildTileset()
Definition
title_screen.cc:23
uchar
unsigned char uchar
Definition
constants.h:114
ushort
unsigned short ushort
Definition
constants.h:112
yaze::app::core::SnesToPc
uint32_t SnesToPc(uint32_t addr) noexcept
Definition
common.h:226
yaze
Definition
common.cc:22
rom.h
snes_tile.h
title_screen.h
src
app
zelda3
screen
title_screen.cc
Generated by
1.12.0