Mesen-S/Core/SpcHud.cpp

37 lines
1.3 KiB
C++

#include "stdafx.h"
#include "SpcHud.h"
#include "Console.h"
#include "SoundMixer.h"
#include "DebugHud.h"
#include "SpcFileData.h"
SpcHud::SpcHud(Console * console, SpcFileData* spcData)
{
_mixer = console->GetSoundMixer().get();
_hud = console->GetDebugHud().get();
_spcData = spcData;
}
void SpcHud::Draw(uint32_t frame)
{
_hud->DrawString(20, 20, "Game:", 0xBBBBBB, 0, 1, frame);
_hud->DrawString(20, 30, "Track:", 0xBBBBBB, 0, 1, frame);
_hud->DrawString(20, 40, "Artist:", 0xBBBBBB, 0, 1, frame);
_hud->DrawString(20, 50, "Comment:", 0xBBBBBB, 0, 1, frame);
_hud->DrawString(70, 20, _spcData->GameTitle, 0xFFFFFF, 0, 1, frame);
_hud->DrawString(70, 30, _spcData->SongTitle, 0xFFFFFF, 0, 1, frame);
_hud->DrawString(70, 40, _spcData->Artist, 0xFFFFFF, 0, 1, frame);
_hud->DrawString(70, 50, _spcData->Comment, 0xFFFFFF, 0, 1, frame);
int16_t left, right;
_mixer->GetLastSamples(left, right);
_volumesL[_volPosition] = left / 128;
_volumesR[_volPosition] = right / 128;
_volPosition = (_volPosition + 1) & 0x7F;
for(int i = 1; i < 128; i++) {
_hud->DrawLine((i - 1)*2, 160 + _volumesL[(_volPosition + i - 1) & 0x7F], i*2, 160 + _volumesL[(_volPosition + i) & 0x7F], 0x30FFAAAA, 1, frame);
_hud->DrawLine((i - 1)*2, 160 + _volumesR[(_volPosition + i - 1) & 0x7F], i*2, 160 + _volumesR[(_volPosition + i) & 0x7F], 0x30AAAAFF, 1, frame);
}
}