Pokered Save Editor 2
Pokemon Red & Blue save file editor - Qt 6 C++/QML
Toggle main menu visibility
Loading...
Searching...
No Matches
areaaudio.cpp
Go to the documentation of this file.
1
/*
2
* Copyright 2020 Twilight
3
*
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
* you may not use this file except in compliance with the License.
6
* You may obtain a copy of the License at
7
*
8
* http://www.apache.org/licenses/LICENSE-2.0
9
*
10
* Unless required by applicable law or agreed to in writing, software
11
* distributed under the License is distributed on an "AS IS" BASIS,
12
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
* See the License for the specific language governing permissions and
14
* limitations under the License.
15
*/
16
22
#include "
./areaaudio.h
"
23
#include "
../../savefile.h
"
24
#include "
../../savefiletoolset.h
"
25
#include "
../../savefileiterator.h
"
26
#include <
pse-db/music.h
>
27
#include <
pse-db/entries/mapdbentry.h
>
28
#include <
pse-db/mapsdb.h
>
29
#include <
pse-common/random.h
>
30
31
AreaAudio::AreaAudio
(
SaveFile
* saveFile)
32
{
33
load
(saveFile);
34
}
35
36
AreaAudio::~AreaAudio
() {}
37
38
void
AreaAudio::load
(
SaveFile
* saveFile)
39
{
40
reset
();
41
if
(saveFile ==
nullptr
)
42
return
;
43
44
auto
toolset = saveFile->
toolset
;
45
46
musicID
= toolset->getByte(0x2607);
47
musicIDChanged
();
48
49
musicBank
= toolset->getByte(0x2608);
50
musicBankChanged
();
51
52
noAudioFadeout
= toolset->getBit(0x29D8, 1, 1);
53
noAudioFadeoutChanged
();
54
55
preventMusicChange
= toolset->getBit(0x29DF, 1, 1);
56
preventMusicChangeChanged
();
57
}
58
59
void
AreaAudio::save
(
SaveFile
* saveFile)
60
{
61
auto
toolset = saveFile->
toolset
;
62
63
toolset->
setByte
(0x2607,
musicID
);
64
toolset->setByte(0x2608,
musicBank
);
65
toolset->setBit(0x29D8, 1, 1,
noAudioFadeout
);
66
toolset->setBit(0x29DF, 1, 1,
preventMusicChange
);
67
}
68
69
void
AreaAudio::reset
()
70
{
71
musicID
= 0;
72
musicIDChanged
();
73
74
musicBank
= 0;
75
musicBankChanged
();
76
77
noAudioFadeout
=
false
;
78
noAudioFadeoutChanged
();
79
80
preventMusicChange
=
false
;
81
preventMusicChangeChanged
();
82
}
83
84
void
AreaAudio::randomize
()
85
{
86
reset
();
87
88
// Select a random song
89
auto
musicEntry =
MusicDB::inst
()->
getStore
().at(
Random::inst
()->rangeExclusive(0,
MusicDB::inst
()->getStoreSize()));
90
91
// Load it into the map
92
musicID
= musicEntry->id;
93
musicIDChanged
();
94
95
musicBank
= musicEntry->bank;
96
musicBankChanged
();
97
}
98
99
void
AreaAudio::setTo
(
MapDBEntry
* map)
100
{
101
reset
();
102
103
// Select a random song
104
MusicDBEntry
* musicEntry = map->
getToMusic
();
105
106
// Load it into the map
107
musicID
= (musicEntry ==
nullptr
)
108
? 0
109
: musicEntry->
id
;
110
musicIDChanged
();
111
112
musicBank
=
musicID
= (musicEntry ==
nullptr
)
113
? 0
114
: musicEntry->
bank
;
115
musicBankChanged
();
116
}
areaaudio.h
AreaAudio::AreaAudio
AreaAudio(SaveFile *saveFile=nullptr)
< Playing track id.
Definition
areaaudio.cpp:31
AreaAudio::musicBank
int musicBank
Definition
areaaudio.h:63
AreaAudio::setTo
void setTo(MapDBEntry *map)
Set music to map's default.
Definition
areaaudio.cpp:99
AreaAudio::~AreaAudio
virtual ~AreaAudio()
Definition
areaaudio.cpp:36
AreaAudio::randomize
void randomize()
Randomize the track.
Definition
areaaudio.cpp:84
AreaAudio::musicID
int musicID
Definition
areaaudio.h:62
AreaAudio::preventMusicChange
bool preventMusicChange
Definition
areaaudio.h:65
AreaAudio::preventMusicChangeChanged
void preventMusicChangeChanged()
AreaAudio::musicIDChanged
protected::void musicIDChanged()
AreaAudio::noAudioFadeout
bool noAudioFadeout
Definition
areaaudio.h:64
AreaAudio::save
void save(SaveFile *saveFile)
Flatten audio settings to the save.
Definition
areaaudio.cpp:59
AreaAudio::reset
void reset()
Blank audio settings.
Definition
areaaudio.cpp:69
AreaAudio::noAudioFadeoutChanged
void noAudioFadeoutChanged()
AreaAudio::musicBankChanged
void musicBankChanged()
AreaAudio::load
void load(SaveFile *saveFile=nullptr)
Expand audio settings from the save.
Definition
areaaudio.cpp:38
MusicDB::getStore
const QVector< MusicDBEntry * > getStore() const
All tracks.
Definition
music.cpp:43
MusicDB::inst
static MusicDB * inst()
< Number of tracks.
Definition
music.cpp:37
Random::inst
static Random * inst()
< Convenience 50% coin flip (integer path), readable from QML.
Definition
random.cpp:31
SaveFileToolset::setByte
void setByte(var16 addr, var8 val)
Simply sets a byte.
Definition
savefiletoolset.cpp:237
SaveFile
One loaded save: the raw 32 KB bytes, their expanded object tree, and the tools that move between the...
Definition
savefile.h:46
SaveFile::toolset
SaveFileToolset * toolset
Tools to operate directly on the raw sav file data.
Definition
savefile.h:117
mapdbentry.h
mapsdb.h
music.h
random.h
savefile.h
savefileiterator.h
savefiletoolset.h
MapDBEntry
One map's complete static definition – the root of the MapDBEntry family.
Definition
mapdbentry.h:56
MapDBEntry::getToMusic
MusicDBEntry * getToMusic() const
Definition
mapdbentry.cpp:356
MusicDBEntry
One music track: its name and bank/id, plus the maps that use it.
Definition
music.h:38
MusicDBEntry::bank
var8 bank
Audio bank.
Definition
music.h:43
MusicDBEntry::id
var8 id
Track id within the bank.
Definition
music.h:44
projects
savefile
src
pse-savefile
expanded
area
areaaudio.cpp
Generated by
1.17.0