Site Tools


documentation:software:opera:portfolio_os:notes_and_gotchas

Hardware Details

  • 3DO M1 has 2MB of DRAM and 1MB of VRAM.
  • The VRAM is generally accessible just as the DRAM. The reverse is not always true.
  • The ARM60 is set to big endian mode. This can not be changed.

Programming Do's and Don'ts

https://ext.3dodev.com/3DO/Portfolio_2.5/OnLineDoc/DevDocs/ppgfldr/smmfldr/cdmfldr/07CDM002.html#XREF15593

  • Making Assumptions about Data Delivery Rates
  • Handling Data Delays
  • Alternating File Reads
  • Testing Performance
  • Other Things You Should Do

Portfolio Programming Etiquette

https://ext.3dodev.com/3DO/Portfolio_2.5/OnLineDoc/DevDocs/ppgfldr/smmfldr/gspfldr/06PGSTOC.html#XREF29562

“If you want to make your software available on future 3DO hardware using future versions of the 3DO operating system, follow the advice in this chapter. If you follow the guidelines discussed below, your application will continue to run as the 3DO platform evolves.”

IO Requests

  • Even though io.h implies otherwise the address of ioi_Recv and ioi_Send are both validated. Only memory the task should have access to is allowed otherwise the error FKr-Severe-System-Standard-ptr/range is illegal for this task is returned.
  • The address validation is only done if the iob_Len is non-zero. The iob_Buffer values will still be accessible by the process receiving the request.

Threads

  • As mentioned in the docs you must open any Devices, Drivers, Folios, etc. before using them in a thread. While memory may be shared between Tasks and Threads it does not appear Items share ownership or exist within one's scope.
  • While it may appear that threads can't take arguments due to the CreateThread signature you can in fact pass two values via the CREATETASK_TAG_ARGC and CREATETASK_TAG_ARGV tags via CreateItem/CreateItemVA.
  • When using CREATETASK_TAG_SP the ta_Arg value should be set to the bottom of the stack. malloc(stacksize) + stacksize

Text / Fonts

  • lib3do's TextLib and FontLib provides decent, flexible functions for fonts and text generation. TextLib provides a “TextCel” object which has a Cel CCB which can then be used to render to a Bitmap. No documentation but look at “DrawTextString()” for an example.
documentation/software/opera/portfolio_os/notes_and_gotchas.txt · Last modified: 2022/10/02 18:56 by trapexit