Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

What do you think of this project work, and what would be the estimated mark based on the marking scheme? Thank you so much for


What do you think of this project work, and what would be the estimated mark based on the marking scheme?

Thank you so much for your time and help! 

 

Preparation and Planning

 

Project Title and Scope

 

 

The problems I will address:

  1. Java as a language is seen as unsuited for high-performance gaming tasks. I aim to show that with the correct techniques, Java can be used as a performant language in this field.
  2. A dynamic re-compiler is limited to a particular architecture. I intend to write a processor agnostic re-compiler that outputs Java bytecode.

 

The project's scope will encompass writing the following in Java:

  • An interpreter-based Sony PlayStation emulator.
  • A debugger.
  • A dynamic re-compiler to speed up the emulator.

 

 

 

Chosen Lifecycle Model

 

For this project, I may make design mistakes that require me to change my approach. 

For this reason I chose the iterative waterfall model.

 

I decided by first looking at the classic waterfall model's conditions, considering whether they would apply for this project and I decided the classic waterfall model just wasn't suitable as revisiting past stages may be needed.

 

I also considered the star model. I have a very clear pathway defined, which doesn't fit well here. I want to place more of an emphasis on implementation than evaluation, as there is much to do and clear outcomes are defined already. 

 

I next looked at the structured-case model. It seemed more suitable for a research project -particularly with the focus on knowledge, theoretical foundations and literature.

 

I almost chose the spiral model, as it was quite relevant to the risks that are inherent in this project. I decided against it however, as I have countered risks in more specific ways.

 

This led to the iterative waterfall model, which is simple enough for my needs, but recognises it is suitable to revisit previous tasks in order to restart progress.

 

 

Required Tasks

 

My tutor requested that I produce a preliminary timeline, which outlines necessary tasks and how long I will need, as there is a high level of risk in a project this complex. I can't stress enough what a good idea this was, as it reassured my tutor and myself that I could do the work.

 

 

  • MIPS R3051 CPU (and debugger):

 

  • System Control Co-processor (Cop0):

 

  • Geometry Transformation Engine (Cop2):

 

  • Motion Decoder (MDEC):

 

  • CD-ROM/Memory card/Controller IO Processor and Related Controller Chips:

 

  • Graphics Processing Unit (GPU):

 

  • Sound Processing Unit:

 

  • Dynamic Re-compilation Core:

 

The above tasks will take approximately 5 months. This allows for TMAs and illness.

 

Within these tasks, I imagine that analysis will take the form of reading the documentation. Design will take the form of planning a start - how I should store registers, level of pipeline accuracy, etc. Implementation is the coding itself, and evaluation in my case will take the form of testing by a few others such as my wife who is a gamer.

 

 

 

Addressing Risks in the Project

 

Identified risks are illness, of myself or family members, and the risk of failure itself. Also, data loss and hardware failure could lose my work. Encountered problems are mentioned in my reflection.

 

Illness

I have addressed this by building more time into the schedule. Also, my project log will allow me to pick up where I last worked if I am ill.

 

 

 

Failure

I have addressed this risk by structuring the project so that parts of it will still be useful, even if I can't finish all of it.   Also, some of the components are can be 'stubbed/thunked' if I run out of time.

 

 

Resources and Skills Needed

 

The resources and skills I will need are quite well defined from the outset. I will need a development workstation, running Netbeans IDE - I have chosen to work inside this IDE as I am familiar with it from previous modules like M362, and I find alternatives like Eclipse to be overly complex.

 

I will also need technical information on the PlayStation itself, and the OpenGL API - this will take the form of programmer manuals and anecdotal reverse engineering.

 

Another important resource is a physical PlayStation - this is to that I can legally dump a BIOS image from it, rather than using a downloaded one from the Internet. These can be obtained cheaply, so this shouldn't be a problem.

 

Skills I need are advanced Java programming, and the ability to consume documentation and come up with a compatible software implementation of hardware components. I also need to work to deadlines, and hopefully meet them acceptably.

 

What will help is my ability to structure things in an object-oriented way. Whilst this project would possibly perform better in C, it would be a lot harder to structure procedurally.

 

I can't see any risks associated with these items that I haven't already covered.

 

Project Work

 

Selected Information Sources

 

To move forward with this project, I have selected multiple information sources. These contain a mixture of technical documentation, and new skills I will need. I have listed the full source information in my references section, and I will no doubt add to this list later on.

 

R3051 Hardware User's Manual

I selected this document because it is an exhaustive reference of the R3051 CPU core found within the PlayStation. It covers everything from pipeline stages, exception processing, binary layout and hardware interrupt handling. 

 

Everything You Have Always Wanted to Know about the Playstation But Were Afraid to Ask

It contains detailed information specific to the PlayStation, which makes it useful for things such as RAM maps and CDROM drive command set information.

 

Nocash PSXSPX Playstation Specifications

I found this whilst searching for a good existing emulator that had a debugger. I found a program called NO$PSX, which had one, and stumbled across the online help, which is incredibly detailed.

 

Study of the techniques for emulation programming

Another document found by my tutor. It contains a general emulation overview. It will mainly be useful when it comes to thinking about my approach to dynamic recompilation, and sound processing. 

 

OpenGL SuperBible Seventh Edition (E-Book)

I was aware of this book already, from reading around the topic. It became clear to me before the start of the project that I would need to learn some form of 3D API so I settled on OpenGL 4.5 as it is cross-platform - this fits with the ethos of platform neutrality I have embraced by using Java for the project. This book contains everything there is to know about this API. 

 

Review and Reflection

 

Progress So Far, and Problems Encountered

 

As my tutor had the foresight to suggest a timeplan, I had something to follow and structure my work to. I started with the R3051 processor and Cop0 co-processor, and things are going as scheduled.

 

written back from registers to main memory. This method makes it trivial.

 

Exception handling:

The core is now able to handle any type of exception - the handler method I completed on the 11th February will take any exception (although none are capable of being thrown yet) and invoke the required behaviour in Cop0 and the pipeline stages. It is important to note what I mean by 'exception':

 

"not a Java exception, a custom object class which does not store stack traces etc."

Bus interface unit and memory:

I hit a problem here, in that my initial design was too complex. The BIU has to be controllable from other devices, as these can take the CPU off the bus and use it for direct memory access. The below log extract from the 14th February shows my frustration:

 

"I hit a 'dead end' with the work that I began on Friday. It quickly became apparent that I had design a component that was way too complex. I therefore started again today. The problem I had before was that I was concerning myself too much with accuracy, cycle counts and what not. In particular priorities for pending jobs was one thing I spent way too much thought on."

 

When I came up with a better implementation, the 'Everything You Have Always Wanted to Know...' document was helpful in determining a rough calculation of two cycles delay for a word from memory.

 

 

Debugger:

The remaining days between 22nd and now have been spent working on the debugger, which is now feature complete. I felt it important to get this done before implementing the pipeline stages, as it gives an overall state view which is useful as opposed to error-prone System.out.println() statements.

 

 

Conclusion, and next steps:

I feel that at the present time I am making good progress. The next step will be completing the R3051 core. 

 

 

 

Skills Development

 

The skills I have worked on have been the consumption of technical documentation. The project so far is quite focused, and I know what 'needs doing' so no surprises have occurred yet.

 

I have also improved my Java skills by writing test programs.

 

The skill I need to develop is with the OpenGL API.

 

 

 

Tutor Communication and Guidance

 

Thus far, my tutor has been most helpful. He provided additional material for me to reference and work from, which has been useful already.

 

All our communication thus far has taken place via e-mail, and I have found him to be prompt and helpful.






Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Management Accounting Information for Decision-Making and Strategy Execution

Authors: Anthony A. Atkinson, Robert S. Kaplan, Ella Mae Matsumura, S. Mark Young

6th Edition

137024975, 978-0137024971

More Books

Students also viewed these Algorithms questions

Question

What opportunities exist for raises and advancement?

Answered: 1 week ago