Space Shuttle Ultra development thread

I've uploaded the updated mps/ssme files...

I don't know if it's related to the missing BIU.cpp (probably not), but when I run pretty much every SSU scenario I get a CTD before the first frame is displayed.... only the docked to the ISS scenario works... And the only thing anything out of the ordinary in the log file is "Missing texture: MBS.dds". I'm using a fresh orbiter and fresh svn files...
 
I've uploaded the updated mps/ssme files...

I don't know if it's related to the missing BIU.cpp (probably not), but when I run pretty much every SSU scenario I get a CTD before the first frame is displayed.... only the docked to the ISS scenario works... And the only thing anything out of the ordinary in the log file is "Missing texture: MBS.dds". I'm using a fresh orbiter and fresh svn files...

BIU.cpp should be in the repository now, and is until now, only data, no code except the constructor is called.

I also have often a CTD when the MPS is powered and I switch VC position (but not during phases with MPS powered down). This will need some attention.

If you plan to implement Helium tanks, make sure these created and managed by the Atlantis class.
 
BIU.cpp should be in the repository now, and is until now, only data, no code except the constructor is called.

I also have often a CTD when the MPS is powered and I switch VC position (but not during phases with MPS powered down). This will need some attention.

If you plan to implement Helium tanks, make sure these created and managed by the Atlantis class.


The VC position CTD (never see it...) is probably a panel thing because I've noticed the timer stops when I move to the MS-2 position.... but I don't thing it's related because I've just done a quick test, changing the .scn file, (I'm in class right now...:lol:) and it CTDed me before the first frame... I'll try more stuff at home...
 
The VC position CTD (never see it...) is probably a panel thing because I've noticed the timer stops when I move to the MS-2 position.... but I don't thing it's related because I've just done a quick test, changing the .scn file, (I'm in class right now...:lol:) and it CTDed me before the first frame... I'll try more stuff at home...

Please... don't mention the war...i mean, Panel stuff. :P


-----Posted Added-----


Hah, it gains shape.

Code:
ShuttleBusManager::Create bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBus::ConnectTo(): Connect bus "DK1"
ShuttleBusManager::Create bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBus::ConnectTo(): Connect bus "DK2"
ShuttleBusManager::Create bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBus::ConnectTo(): Connect bus "DK3"
ShuttleBusManager::Create bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBus::ConnectTo(): Connect bus "DK4"
ShuttleBusManager::Create bus "IC1"
ShuttleBus::ConnectTo(): Connect bus "IC1"
ShuttleBus::ConnectTo(): Connect bus "IC1"
ShuttleBus::ConnectTo(): Connect bus "IC1"
ShuttleBus::ConnectTo(): Connect bus "IC1"
ShuttleBus::ConnectTo(): Connect bus "IC1"
ShuttleBusManager::Create bus "IC2"
ShuttleBus::ConnectTo(): Connect bus "IC2"
ShuttleBus::ConnectTo(): Connect bus "IC2"
ShuttleBus::ConnectTo(): Connect bus "IC2"
ShuttleBus::ConnectTo(): Connect bus "IC2"
ShuttleBus::ConnectTo(): Connect bus "IC2"
ShuttleBusManager::Create bus "IC3"
ShuttleBus::ConnectTo(): Connect bus "IC3"
ShuttleBus::ConnectTo(): Connect bus "IC3"
ShuttleBus::ConnectTo(): Connect bus "IC3"
ShuttleBus::ConnectTo(): Connect bus "IC3"
ShuttleBus::ConnectTo(): Connect bus "IC3"
ShuttleBusManager::Create bus "IC4"
ShuttleBus::ConnectTo(): Connect bus "IC4"
ShuttleBus::ConnectTo(): Connect bus "IC4"
ShuttleBus::ConnectTo(): Connect bus "IC4"
ShuttleBus::ConnectTo(): Connect bus "IC4"
ShuttleBus::ConnectTo(): Connect bus "IC4"
ShuttleBusManager::Create bus "IC5"
ShuttleBus::ConnectTo(): Connect bus "IC5"
ShuttleBus::ConnectTo(): Connect bus "IC5"
ShuttleBus::ConnectTo(): Connect bus "IC5"
ShuttleBus::ConnectTo(): Connect bus "IC5"
ShuttleBus::ConnectTo(): Connect bus "IC5"

Now it would maybe be interesting to also know, which subsystem and which BIU got connected to a Bus...even if this data is just important for debugging currently.
 
Hey,
I know you guys think I'm an extreme noob. Well I am, at coding at least. When trying to compile, I'm SO close, but I'm down to 4 errors on the Atlantis Project:
Code:
Atlantis.obj : error LNK2019: unresolved external symbol "void __cdecl oapiRegisterCustomControls(struct HINSTANCE__ *)" (?oapiRegisterCustomControls@@YAXPAUHINSTANCE__@@@Z) referenced in function _InitModule
Atlantis.obj : error LNK2019: unresolved external symbol "void __cdecl oapiUnregisterCustomControls(struct HINSTANCE__ *)" (?oapiUnregisterCustomControls@@YAXPAUHINSTANCE__@@@Z) referenced in function _ExitModule
PlBayOp.obj : error LNK2019: unresolved external symbol "int __cdecl oapiSetSwitchState(struct HWND__ *,int,bool)" (?oapiSetSwitchState@@YAHPAUHWND__@@H_N@Z) referenced in function "private: void __thiscall PayloadBayOp::UpdateDialog(struct HWND__ *)" (?UpdateDialog@PayloadBayOp@@AAEXPAUHWND__@@@Z)
PlBayOp.obj : error LNK2019: unresolved external symbol "void __cdecl oapiSetSwitchParams(struct HWND__ *,struct SWITCHPARAM *,bool)" (?oapiSetSwitchParams@@YAXPAUHWND__@@PAUSWITCHPARAM@@_N@Z) referenced in function "private: int __thiscall PayloadBayOp::DlgProc(struct HWND__ *,unsigned int,unsigned int,long)" (?DlgProc@PayloadBayOp@@AAEHPAUHWND__@@IIJ@Z)

What in the world are these, and how do I fix them?

Sorry about being a noob,
Myles.
 
What in the world are these, and how do I fix them?
They are linker errors, ie, the compiler is looking for some functions (oapiXXXX) in another library (.lib) file and is not finding them. In this case it appears that the file it is looking for is either "orbiter.lib" or "Orbitersdk.lib". Check your project linker settings and make sure you have the OrbiterSDK\lib directory in the "Linker|General|Additional Library Dependencies" setting. You may also need to add "orbiter.lib" and "Orbitersdk.lib" to the "Linker|Input|Additional Dependencies" setting.
 
Are these the correct input>additional dependencies libraries? "orbiter.lib Orbitersdk.lib OrbiterSoundSDK35.lib kernel32.lib user32.lib gdi32.lib"

In my ignore, I have, "msvcirt.lib;MSVCRT.lib"
 
Are these the correct input>additional dependencies libraries? "orbiter.lib Orbitersdk.lib OrbiterSoundSDK35.lib kernel32.lib user32.lib gdi32.lib"

In my ignore, I have, "msvcirt.lib;MSVCRT.lib"
Looks OK but you need to have the path(s) to those libraries nominated in "Linker|General|Additional Library Dependencies" so that the linker can find them.
 
Yes, and I double checked to make sure there were no capitalization or path errors, and and made sure each of those libraries was in the correct location. I swear, my computer hates me.

garfield_computer.jpg

smashedComputer.jpg
 
Hmm, How nice. Now I'm getting 49 errors. Some include:

Code:
MasterTimingUnit.obj : error LNK2001: unresolved external symbol __imp__vsprintf_s
MasterTimingUnit.obj : error LNK2019: unresolved external symbol __imp__stricmp referenced in function "public: virtual bool __thiscall dps::MasterTimingUnit::OnParseLine(char const *)" (?OnParseLine@MasterTimingUnit@dps@@UAE_NPBD@Z)
OLDNAMES.lib(stricmp.obi) : error LNK2001: unresolved external symbol __imp__stricmp
....ModulesMG_Atlantis.dll : fatal error LNK1120: 9 unresolved externals
Along with:

Code:
Atlantis.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported
BasicPanel.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported
BasicSwitch.obj : warning LNK4049: locally defined symbol ??0exception@std@@QAE@ABQBD@Z (public: __thiscall std::exception::exception(char const * const &)) imported
IDP.obj : warning LNK4049: locally defined symbol ??1exception@std@@UAE@XZ (public: virtual __thiscall std::exception::~exception(void)) imported

Edit: oops, the 4049's are just warnings.

_______
Why me?
 
Last edited:
Like most shuttle problems, my CTDs were caused by the tiles.... not the tiles on the OV but the surface tiles... My crappy PC can't handle them, so I had to take them of the canaveral.cfg so it runs.... other than that everything works very well!!!
 
Like most shuttle problems, my CTDs were caused by the tiles.... not the tiles on the OV but the surface tiles... My crappy PC can't handle them, so I had to take them of the canaveral.cfg so it runs.... other than that everything works very well!!!

Do you want to do yourself a favor? ;) Create a "SSU configuration" launch pad item, which allows switching between different performance levels, for example a Canaveral without tiles and and lower resolution static meshes.

The tiles + the launch pad meshes are the worst performance killers currently, when I watch the beautiful new TAL sites, I get up to 158 fps on my machine, 60 fps when I am in the VC in Orbit.


-----Posted Added-----


OK, the new Saving and restoring of switch positions with the scenario file is working, also in the new format. Would only affect the panels which use the "new" object-oriented format.
 
OK, the new Saving and restoring of switch positions with the scenario file is working, also in the new format. Would only affect the panels which use the "new" object-oriented format.
So your goal now is to make all the currently working panels use this(C2, C3, R2, A7L, R13, A8)?
 
So your goal now is to make all the currently working panels use this(C2, C3, R2, A7L, R13, A8)?

Slowly, yes. Not all required VC components are defined yet, others are evil hacks, in case of the event timers, I even think about having two classes for representing them... they are one of the many subsystems which are also display items.

Also, I would like to work on getting the core DPS done, so we can really concentrate on the details without having to fear big changes in the next year.

My current idea was to work on the basic behavior of the GPCs:


  1. Power on/off
    1. Panel O6
    2. Connection between Panel O6 and GPCs
  2. Initial program load.
    1. GPC Memory management
    2. GPC-MMU interface
    3. Memory configurations
    4. Nominal Bus Assignment Tables
    5. Basic PASS software
  3. GPC-IDP interface
    1. Poll IDP
    2. Transfer single key commands
    3. Verify and transfer multi-key commands
    4. Paint GPCIPL MENU (1) display
    5. Paint GPCIPL MENU (2) display
At this point, there should be a minimal GPC "simulated" (I am sure an AP-101S would crash if it reads this claim). The reactions of one such GPC to key presses or switch throws should be roughly like the real thing.

I still have to think about how to make the switch from SiameseCats working GNC CRT code to the than rather experimental GPC code. Maybe I will add a very complicated keypress somewhere to mode the MDUs to use the GPCs as source, until we can port the GNC software into the more detailled version of the GPCs.
 
Sounds like plan! Would love to play around with the GPC, IDP and IPL switches!
 
Sounds like plan! Would love to play around with the GPC, IDP and IPL switches!

You are not the only one. :)

I am fed up with playing with a System/360 emulator and making rocket engine noises. :P

The good thing is, that all scheduling happens at discrete intervals... Major cycles are 960 ms long, minor cycles 40 ms. For each major cycle, you have 24 minor cycles. The problem is just to split the low priority software (scheduled for each major cycle) so, that it can be simulated with minor cycles happening in parallel.

EDIT: I am already very happy that the straight forward implementation of the PSW structure (Program Status Word) worked like charm.
 
Hmmm. Latest rev has a problem with Atlantis.cpp:

Code:
[SIZE=1]
1>.Atlantis.cpp(5418) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5418) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5419) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5419) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5420) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5420) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5421) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5421) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5422) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5422) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5423) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5423) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5424) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5424) : error C2065: 'simdt' : undeclared identifier
1>.Atlantis.cpp(5425) : error C2065: 'simt' : undeclared identifier
1>.Atlantis.cpp(5425) : error C2065: 'simdt' : undeclared identifier
[/SIZE]
 
Back
Top