public boolean generatePRGHexDump(Component parentComponent){            
        if(_numPrgBanks == 0){
            System.err.println("Nothing to Dump");
            return false;
        }
        if(_prgBanks.length != _numPrgBanks || _chrBanks.length != _numChrBanks){
           System.err.println("Bank size mismatch");
            return false;
        }

        File selectedFile = FileUtilities.selectFileForSave(parentComponent);
        if(selectedFile == null){
            return false;
        }
        boolean retValue = true;
        FileOutputStream fos = null;
        PrintStream printStream = null;
        try {
            fos = new FileOutputStream(selectedFile);
            printStream = new PrintStream(fos);
        
            ROMDisassembler disassembler = new ROMDisassembler();
            for(int i=0;i<_prgBanks.length ;i++){
                printStream.println("PRG Bank:" + i);
                disassembler.spewPRGBank(printStream, _prgBanks[i], parentComponent);
            }
        } catch(Exception e) {
            e.printStackTrace();
            retValue = false;
        }
        try {
            if(printStream != null){
                printStream.flush();
            }
            if(fos != null){
                fos.flush();
                fos.close();
            }
        } catch(Exception e) {
            e.printStackTrace();
            retValue = false;
        }
        return retValue;
     }