More fixes, plus a temp icon

This commit is contained in:
dingusdev 2019-07-19 14:24:39 -07:00 committed by GitHub
parent f89c54848b
commit c9854b36c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 62 additions and 19 deletions

View File

@ -13,7 +13,9 @@
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-std=c++14" />
<Add option="-Weffc++" />
<Add option="-Wall" />
<Add option="-std=c++11" />
<Add option="-m32" />
<Add option="-g" />
</Compiler>
@ -27,11 +29,13 @@
<Option type="1" />
<Option compiler="gcc" />
<Compiler>
<Add option="-march=core2" />
<Add option="-Os" />
<Add option="-std=c++14" />
<Add option="-m32" />
</Compiler>
<Linker>
<Add option="-O3" />
<Add option="-s" />
<Add option="-m32" />
</Linker>
</Target>

BIN
dppcicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 KiB

1
icon.rc Normal file
View File

@ -0,0 +1 @@
MAINICON ICON "dppcicon.ico"

View File

@ -10,6 +10,12 @@
#include <map>
//Uncomment this to help debug the emulator further
//#define EXHAUSTIVE_DEBUG 1
//Uncomment this to have a more graceful approach to illegal opcodes
//#define ILLEGAL_OP_SAFE 1
enum endian_switch {big_end = 0, little_end = 1};
typedef void (*PPCOpcode)(void);
@ -616,7 +622,7 @@ static std::map<uint8_t, PPCOpcode> OpcodeGrabber =
{44, &ppc_sth}, {45, &ppc_sthu}, {46, &ppc_lmw}, {47, &ppc_stmw},
{48, &ppc_lfs}, {49, &ppc_lfsu}, {50, &ppc_lfd}, {51, &ppc_lfdu},
{52, &ppc_stfs}, {53, &ppc_stfsu}, {54, &ppc_stfd}, {55, &ppc_stfdu},
{56, &ppc_psq_l}, {57, &ppc_psq_lu}, {58, &ppc_illegalop}, {59, &ppc_illegalop},
{56, &ppc_psq_l}, {57, &ppc_psq_lu}, {58, &ppc_illegalop}, {59, &ppc_opcode59},
{60, &ppc_psq_st}, {61, &ppc_psq_stu}, {62, &ppc_illegalop}, {63, &ppc_opcode63}};
//All of the opcodes possible are generated from the first 6 bits

View File

@ -730,7 +730,7 @@ void address_quickinsert_translate(uint32_t value_insert, uint32_t address_grab,
void address_quickgrab_translate(uint32_t address_grab, uint8_t bit_num){
//Grab a value from memory into a register
printf("Grabbing from address %x \n", address_grab);
//printf("Grabbing from address %x \n", address_grab);
uint32_t storage_area = 0;
uint32_t grab_batl = 537;
@ -782,7 +782,7 @@ void address_quickgrab_translate(uint32_t address_grab, uint8_t bit_num){
}
if (address_grab >= 0xFFC00000){
printf("Charting ROM Area: %x \n", address_grab);
//printf("Charting ROM Area: %x \n", address_grab);
storage_area = address_grab % rom_file_setsize;
grab_macmem_ptr = machine_sysrom_mem;
ppc_set_return_val(storage_area, bit_num);

View File

@ -224,26 +224,30 @@ void ppc_opcode4(){
}
void ppc_opcode16(){
//printf("Reading from Opcode 16 table \n");
uint8_t subop_grab = ppc_cur_instruction & 3;
//uint32_t regrab = (uint32_t)subop_grab;
//printf("Executing subopcode entry %d \n", regrab);
#ifdef EXHAUSTIVE_DEBUG
uint32_t regrab = (uint32_t)subop_grab;
printf("Executing Opcode 16 table subopcode entry %d \n", regrab);
SubOpcode16Grabber[subop_grab]();
#else
SubOpcode16Grabber[subop_grab]();
#endif // EXHAUSTIVE_DEBUG
}
void ppc_opcode18(){
//printf("Reading from Opcode 18 table \n");
uint8_t subop_grab = ppc_cur_instruction & 3;
//printf("Reading from Opcode 18 table \n");
//uint32_t regrab = (uint32_t)subop_grab;
//printf("Executing subopcode entry %d \n", regrab);
SubOpcode18Grabber[subop_grab]();
}
void ppc_opcode19(){
//printf("Reading from Opcode 19 table \n");
uint16_t subop_grab = ppc_cur_instruction & 2047;
//uint32_t regrab = (uint32_t)subop_grab;
//printf("Executing subopcode entry %d \n", regrab);
#ifdef EXHAUSTIVE_DEBUG
uint32_t regrab = (uint32_t)subop_grab;
printf("Executing Opcode 19 table supopcode entry %d \n", regrab);
if (SubOpcode19Grabber.count(subop_grab) == 1){
SubOpcode19Grabber[subop_grab]();
}
@ -251,13 +255,16 @@ void ppc_opcode19(){
std::cout << "ILLEGAL SUBOPCODE: " << subop_grab << std::endl;
ppc_expection_handler(0x0700, 0x80000);
}
#else
SubOpcode19Grabber[subop_grab]();
#endif // EXHAUSTIVE_DEBUG
}
void ppc_opcode31(){
//printf("Reading from Opcode 31 table \n");
uint16_t subop_grab = ppc_cur_instruction & 2047;
//uint32_t regrab = (uint32_t)subop_grab;
//printf("Executing subopcode entry %d \n", regrab);
#ifdef EXHAUSTIVE_DEBUG
uint32_t regrab = (uint32_t)subop_grab;
printf("Executing Opcode 31 table supopcode entry %d \n", regrab);
if (SubOpcode31Grabber.count(subop_grab) == 1){
SubOpcode31Grabber[subop_grab]();
}
@ -265,20 +272,43 @@ void ppc_opcode31(){
std::cout << "ILLEGAL SUBOPCODE: " << subop_grab << std::endl;
ppc_expection_handler(0x0700, 0x80000);
}
#else
SubOpcode31Grabber[subop_grab]();
#endif // EXHAUSTIVE_DEBUG
}
void ppc_opcode59(){
uint16_t subop_grab = ppc_cur_instruction & 2047;
#ifdef EXHAUSTIVE_DEBUG
uint32_t regrab = (uint32_t)subop_grab;
printf("Executing Opcode 59 table supopcode entry %d \n", regrab);
if (SubOpcode59Grabber.count(subop_grab) == 1){
SubOpcode59Grabber[subop_grab]();
}
else{
std::cout << "ILLEGAL SUBOPCODE: " << subop_grab << std::endl;
ppc_expection_handler(0x0700, 0x80000);
}
#else
SubOpcode59Grabber[subop_grab]();
#endif // EXHAUSTIVE_DEBUG
}
void ppc_opcode63(){
//printf("Reading from Opcode 63 table \n");
uint16_t subop_grab = ppc_cur_instruction & 2047;
//uint32_t regrab = (uint32_t)subop_grab;
//std::cout << "Executing subopcode entry " << regrab << std::endl;
#ifdef EXHAUSTIVE_DEBUG
uint32_t regrab = (uint32_t)subop_grab;
std::cout << "Executing Opcode 63 table subopcode entry " << regrab << std::endl;
if (SubOpcode63Grabber.count(subop_grab) == 1){
SubOpcode63Grabber[subop_grab]();
}
else{
//std::cout << "ILLEGAL SUBOPCODE: " << subop_grab << std::endl;
std::cout << "ILLEGAL SUBOPCODE: " << subop_grab << std::endl;
ppc_expection_handler(0x0700, 0x80000);
}
#else
SubOpcode63Grabber[subop_grab]();
#endif // EXHAUSTIVE_DEBUG
}
void ppc_main_opcode(){
@ -1906,7 +1936,9 @@ void ppc_stb(){
ppc_grab_regssa();
grab_d = (uint32_t)((int32_t)((int16_t)(ppc_cur_instruction & 0xFFFF)));
ppc_effective_address = (reg_a == 0)?grab_d:(ppc_result_a + grab_d);
#ifdef EXHAUSTIVE_DEBUG
printf("STB Storage Area: %x \n",ppc_effective_address);
#endif // EXHAUSTIVE_DEBUG
address_quickinsert_translate(ppc_result_d, ppc_effective_address, 1);
}