forums.ps2dev.org Forum Index forums.ps2dev.org
Homebrew PS2, PSP & PS3 Development Discussions
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Programmer's Notepad : smallest devtool for ps2dev

 
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS2 Development
View previous topic :: View next topic  
Author Message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Fri Jan 12, 2007 8:43 pm    Post subject: Programmer's Notepad : smallest devtool for ps2dev Reply with quote

PN2 (Programmer's Notepad v2.6.0.1) is free and can be found here :
http://www.pnotepad.org

The mass of code I'm handling is becoming really huge, and I felt the need to have some tool able to take me right to the faulty line when a compilation error occurs, even if I'm just using cygwin alone (i.e you type "make" in a cygwin window to compile programs).

PN2 brought me that instantly (Pn doesn't need to be installed, just put it in any directory).

Here is how I've attached F9 key to an automatic make+report errors/send binary to console operation :
- copy cygwin.bat in order to create cygwin_make.bat (in \cygwin)
- at top of cygwin_make.bat, add this line :
set AUTOMAKE=ON
- in your account directory, add this line in .bashrc file :
(assuming your project is in subdirectory myproject):
if [ -n "$AUTOMAKE" ]; then cd myproject; make; exit; fi

Now if cygwin_make.bat is launched instead of cygwin.bat, session opens, make is done, session is closed.

In PN2, now, go in Tools->Options. Select Tools on bottom left. Select "(None) - Global tools" in Scheme combolist at top. Click Add. Fill in the fields :
Name: Make
Command: c:\cygwin\cygwin_make.bat
Folder: <full path to your project files, or file won't be shown when you click an error report line>
Shortcut: F9 (select field and press F9)
Save: All files

Now just hit F9 to save, make, and eventually send to console (if your makefile launch ftp2xbox.bat or ps2client.exe - see Pong makefile for example)

You can also save the list (.pnws) of all the text files you opened so they can be opened automatically later, if you associate .pnws to pn.exe, and double click .pnws file.

(I bet this method can still be improved)
Back to top
View user's profile Send private message
Henk



Joined: 29 Dec 2006
Posts: 14

PostPosted: Fri Jan 12, 2007 10:34 pm    Post subject: Reply with quote

Thanks for the info. I downloaded it and will have a look at it.

Since I'm developing on a linux system (I never bothered with that cygwin stuff) I will try out how I can get the same stuff done via ssh and samba.

If I get it to work I'll post a howto :)
Back to top
View user's profile Send private message
ubergeek42



Joined: 13 Jul 2005
Posts: 83

PostPosted: Sat Jan 13, 2007 6:26 am    Post subject: Reply with quote

That looks nice, I've been using eclipse for a while, but this looks slicker, and probably less prone to crashing.
Back to top
View user's profile Send private message AIM Address MSN Messenger
J.F.



Joined: 22 Feb 2004
Posts: 2906

PostPosted: Sat Jan 13, 2007 9:28 am    Post subject: Reply with quote

Folks on a linux system would be better off using gedit for lightweight programming. It has the same kind of functionality the original poster talks about plus a bit more. If you want something a bit more extensive, but not nearly as heavy as Eclipse, try Code Blocks. That's in the Fedora Extras repo, among other places.
Back to top
View user's profile Send private message AIM Address
dlanor



Joined: 28 Oct 2004
Posts: 269
Location: Stockholm, Sweden

PostPosted: Sun Jan 14, 2007 9:15 pm    Post subject: Re: Programmer's Notepad : smallest devtool for ps2dev Reply with quote

ps2devman wrote:
Here is how I've attached F9 key to an automatic make+report errors/send binary to console operation :
- copy cygwin.bat in order to create cygwin_make.bat (in \cygwin)
- at top of cygwin_make.bat, add this line :
set AUTOMAKE=ON
- in your account directory, add this line in .bashrc file :
(assuming your project is in subdirectory myproject):
if [ -n "$AUTOMAKE" ]; then cd myproject; make; exit; fi

Now if cygwin_make.bat is launched instead of cygwin.bat, session opens, make is done, session is closed.
This way of launching 'make' through a BAT file reminds me slightly of how I do things myself, except that I have made my BAT files accept drag-drop of files to invoke bash, in such a way that all the Cygwin tools, including 'make' itself, will be properly invoked from bash, instead of being invoked from the command line interpreter of Windows.

Possibly I misunderstood your method, but it seems to me that it is still the Windows CLI which (via BAT) launches the 'make.exe' of Cygwin. This may cause some PS2 projects to fail, as they need to execute 'make' under bash.

My own method relies on having some shortcuts on the desktop, onto which I can drag-drop files for processing. Thus I have one icon for 'make all', another for 'make clean', etc, onto which I can drag-drop a makefile from any PS2 (or other Cygwin-based) project. I also have a similar 'bash' icon, onto which I can drag-drop any bash script for execution. And in all those drag-drop cases, I've arranged it so that bash will switch to the drag-drop source folder before starting any processing. Thus all such processing will work exactly as if I had started bash manually, navigated to the proper project folder, and there issued the appropriate 'make' or script commands by hand.

Naturally there is no way a simple BAT script can do all that by itself, so I use a mixture of BAT files and SH files invoked from the top level BAT file, so as to build a modified DD_init.rc for each invocation, and this file is referenced (when it exists only) from the main .bashrc, in order to pass argument and launch folder info from the Windows BAT into the bash script for each command variant. I'm sure similar methods can be found to let your invocation method launch 'make' properly from bash as well.

I've posted an archive with these scripts of mine here quite some time ago, though it has most likely drowned in other stuff by this time. But you can probably find it by searching old posts by me, or if you like I could even repost it.

Best regards: dlanor
Back to top
View user's profile Send private message
sparrow



Joined: 13 Apr 2006
Posts: 24

PostPosted: Mon Jan 15, 2007 4:14 am    Post subject: Reply with quote

Hi folks!

I use Crimson Editor + BAT file (which spawns bash, so all make process is done under cygwin, not under windows).

Here are the contents of my RUN.BAT file:

Code:

c:\cygwin\bin\bash -c 'export WORK_PATH=`pwd`; /bin/bash --login -c "cd \"$WORK_PATH\"; %1 %2 %3 %4 %5"'


Here is my Crimson's Editor config for the F9 key shortcut (which calls MAKE):



Another thing we must set are environment variables under cygwin (c:\cygwin\etc\bash.bashrc). Here are the contents of my bash.bashrc file (I use the same config above for PSPSDK as well. Works great!):

Code:
# base-files version 3.7-1

# WARNING
#
# IF THIS bash IS MODIFIED IT WILL NOT BE UPDATED BY THE CYGWIN
# SETUP PROGRAM.  IT BECOMES YOUR RESPONSIBILITY.
#
# The latest version as installed by the Cygwin Setup program can
# always be found at /etc/defaults/etc/bash.bashrc

# System-wide .bashrc file

## PS2DEV SETTINGS
export PS2DEV="/usr/local/ps2dev"
export PS2SDK="$PS2DEV/ps2sdk"
export PATH="$PATH:$PS2DEV/bin:$PS2DEV/ee/bin:$PS2DEV/iop/bin"
export PATH="$PATH:$PS2DEV/dvp/bin:$PS2SDK/bin"

## PSPSDK SETTINGS
export PSPSDK="/usr/local/pspdev"
export PATH="$PATH:/usr/local/pspdev/bin"



This way, my Crimson Editor + Toolchain works like professional SDK

Hope these tips help you guys to get a better programming environment! ;)

Best regards,

bootsector
Back to top
View user's profile Send private message Visit poster's website
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Mon Jan 15, 2007 10:50 am    Post subject: Reply with quote

Wow thanks a lots. I will try it.
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Sat Jan 20, 2007 8:18 pm    Post subject: Reply with quote

Mmm... -c doesn't seem to work for my bash, but you gave me ideas for some improvement for the pn2 method
(it's strange, I have the feeling pn2 is a just another version of crimson editor, window seems strangely similar)

new method for pn2 (more flexible) :

add this to cygwin.bat (after echo off and before the call to bash) :
set CYGWINPARAM1=%1
set CYGWINPARAM2=%2
set CYGWINPARAM3=%3
set CYGWINPARAM4=%4
set CYGWINPARAM5=%5

add this to .bashrc (so it's executed by bash, no problem):
if [ -n "$CYGWINPARAM1" ]; then
cd $CYGWINPARAM1
if [ -n "$CYGWINPARAM2" ]; then
$CYGWINPARAM2 $CYGWINPARAM3 $CYGWINPARAM4 $CYGWINPARAM5
fi
exit
fi


In PN2, now, go in Tools->Options. Select Tools on bottom left. Select "(None) - Global tools" in Scheme combolist at top. Click Add. Fill in the fields :

Name: Make
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d make
Shortcut: F9 (select field and press F9)
Save: All files

Name: Make clean
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d make clean
Shortcut: F12 (select field and press F12)
Save: All files
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Tue Feb 20, 2007 10:37 pm    Post subject: Reply with quote

To assemble .vsm (consider it as a vertex/pixel shader source on PS2)
into an object file .o :

Name: Dvp-as
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d /usr/local/ps2dev/dvp/bin/dvp-as %n.vsm -o %n.o
Shortcut: F4 (select field and press F4)
Save: All files

(since errors are reported the standard way, clicking an error line takes you correctly to line in .vsm source)

Saotome's little 'vulib' seems the easiest way to directly use the .o contents afterwards from within .elf code.
(http://forums.ps2dev.org/viewtopic.php?t=2812)
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Wed Feb 21, 2007 12:23 am    Post subject: Reply with quote

To compile .vcl (easy to read Vu Command Line preprocessor source)
into a .vsm source

Name: Vcl
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d vcl_14beta7 -o%n.vsm -G %n.vcl
Shortcut: F7 (select field and press F7)
Save: All files

You can find vcl_14beta7 here:
http://playstation2-linux.com/projects/vcl/

Note that I use -G instead of -g because I don't have ee-gasp.
So I use cpp macro expander instead of ee-gasp
(#define instead of .crap)

These Parameters reach the limit of 5 parameters, so, if you need more parameters, of course, add more constants in cygwin.bat and .bashrc
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Wed Feb 21, 2007 8:24 pm    Post subject: Reply with quote

Well... it seems that no using gasp is quite insane...
After seaching through forums posts, I could finally obtain gasp.
With it, nice .vcl samples out there can be finally optimized into .vsm.

Name: Vcl (optimizes ps2 .vcl into .vsm)
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d gasp_vcl.sh %n.vcl %n.vsm
Shortcut: F7 (select field and press F7)
Save: All files
This tool will modify the current file: Yes

If you are lazy, all you need is this archive :
http://home.tele2.fr/~fr-51785/ps2_gasp_vcl.zip




If you want the details, here they are :

gasp_vcl.sh and other binaries must be copied into /usr/local/bin

gasp_vcl.sh contents ("masp -P ." is similar to "gasp"):
masp -P . $CYGWINPARAM3 | vcl_14beta7 -o$CYGWINPARAM4

(.vcl/.vsm in PS2 world are similar to .cg/.vsh in Nvidia world)

Useful links :
vcl comes from here: http://playstation2-linux.com/projects/vcl/ (vcl.1.4.beta7.x86.tgz)
vulib can be found here: http://forums.ps2dev.org/viewtopic.php?t=2812 (vu-lib.zip)
masp comes from here: http://cosmos.raunvis.hi.is/~johannos/masp/ (masp-0.1.16.tar.gz)

Masp compiles with errors. Here is what you have to fix if you want to recompile it:
1) liberty/getpagesize.c : just comment the whole function getpagesize (exists already)
2) liberty/vsprintf.c : replace #include <varargs.h> with #include <stdarg.h>
3) src/masp.c, line 4282 : Add the missing final \ (PN2 will show the line in purple)

Nasty issue found in Masp :
For example, in basic.vcl (from one of the great vcl samples), you find this line :
mat_x_mat Transform, LocalWorld, ScreenMat ; mat_x_mat nm,lm,rm nm = lm x rm

mat_x_mat is a macro defined in vumacros.m, but won't be expanded at all because of the trailing comment. You will have to remove any comment found behind macros (or break line).
Back to top
View user's profile Send private message
ps2devman



Joined: 09 Oct 2006
Posts: 265

PostPosted: Mon Feb 26, 2007 10:31 pm    Post subject: Reply with quote

Name: Addr2line (a window will pop up to ask for the hexa address)
Command: c:\cygwin\cygwin.bat
Folder: %d
Parameters: %d addr2line -e test.elf %?
Shortcut: F4 (select field and press F4)
Save: None
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    forums.ps2dev.org Forum Index -> PS2 Development All times are GMT + 10 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group