2012-01-23 07:41:05 +00:00
|
|
|
|
#include "Console.h"
|
|
|
|
|
#include "Parser.h"
|
|
|
|
|
#include <sstream>
|
|
|
|
|
#include <string>
|
|
|
|
|
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
int main(int argc, char** argv)
|
|
|
|
|
{
|
2012-01-23 09:59:25 +00:00
|
|
|
|
const unsigned char parameters = 2;
|
|
|
|
|
const unsigned char self = 1;
|
|
|
|
|
const unsigned char _max_argc = parameters + self;
|
|
|
|
|
|
2012-01-23 07:41:05 +00:00
|
|
|
|
string arg1; // Offset
|
2012-01-23 09:59:25 +00:00
|
|
|
|
string arg2; // File or "--" (if "--" then the file is assumed)
|
|
|
|
|
|
|
|
|
|
string paramStopAddr;
|
2012-01-23 07:41:05 +00:00
|
|
|
|
|
2012-01-23 09:59:25 +00:00
|
|
|
|
if(argc >= _max_argc)
|
2012-01-23 07:41:05 +00:00
|
|
|
|
{
|
|
|
|
|
arg1 = argv[1];
|
|
|
|
|
arg2 = argv[2];
|
|
|
|
|
}
|
2012-01-23 09:59:25 +00:00
|
|
|
|
else if(argc == (_max_argc - 1))
|
2012-01-23 07:41:05 +00:00
|
|
|
|
{
|
|
|
|
|
arg1 = argv[1];
|
|
|
|
|
arg2 = "../baserom.gbc";
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-23 09:59:25 +00:00
|
|
|
|
// Process any parameters
|
|
|
|
|
if(argc > _max_argc)
|
|
|
|
|
{
|
|
|
|
|
for(int i = _max_argc; i < argc; i++)
|
|
|
|
|
{
|
|
|
|
|
string tmpArgv = argv[i];
|
|
|
|
|
if(tmpArgv.substr(0, 7) == "--stop=") paramStopAddr = tmpArgv.substr(7);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-23 07:41:05 +00:00
|
|
|
|
if(arg1 == "") Console::Ask("What offset in the file in hex (0x----): ", arg1);
|
|
|
|
|
if(arg2 == "") Console::Ask("What file: ", arg2);
|
|
|
|
|
|
|
|
|
|
// Weird way of converting arg1 to an unsigned integer
|
2012-01-23 09:59:25 +00:00
|
|
|
|
Parser p(arg2);
|
|
|
|
|
|
2012-01-23 07:41:05 +00:00
|
|
|
|
stringstream arg1Conv;
|
|
|
|
|
unsigned int arg1ConvNum;
|
|
|
|
|
arg1Conv << arg1;
|
|
|
|
|
arg1Conv << hex;
|
|
|
|
|
arg1Conv >> arg1ConvNum;
|
|
|
|
|
|
2012-01-23 09:59:25 +00:00
|
|
|
|
if(paramStopAddr != "")
|
|
|
|
|
{
|
|
|
|
|
stringstream paramStopAddrConv;
|
|
|
|
|
unsigned int paramStopAddrNum = 0;
|
|
|
|
|
paramStopAddrConv.str("");
|
|
|
|
|
paramStopAddrConv << paramStopAddr;
|
|
|
|
|
paramStopAddrConv << hex;
|
|
|
|
|
paramStopAddrConv >> paramStopAddrNum;
|
|
|
|
|
p.SetStopAddress(paramStopAddrNum);
|
|
|
|
|
}
|
|
|
|
|
|
2012-01-23 07:41:05 +00:00
|
|
|
|
p.Parse(arg1ConvNum);
|
|
|
|
|
Console::PrintLn(p.GetParsedAsm().c_str());
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|