Sponsored Links

Sponsored Links

Results 1 to 6 of 6



  1. #1
    Forum Moderator PS3 News's Avatar
    Join Date
    Apr 2005
    Posts
    27,452
    Sponsored Links

    Video: PS3Flow (aka PuneFlow) PS3 Flow Source Code is Released

    Sponsored Links
    Today PlayStation 3 developer GiantPune (via bubba) released the PS3Flow (aka PuneFlow) PS3 Flow source code complete with a video from Lobo Guara of it in action below.

    Download: [Register or Login to view links] / [Register or Login to view links] (Mirror)

    To quote and from the PS3 NFO File: Thanks to bubba we are able to release the full source code of PS3Flow aka PuneFlow, a tool that is very similar to the famous WiiFlow. The source code is two years old and now it is up to you to make something nice out of it and release it asap!

    Special thanks to GiantPune for building it. Awesome work! PS3Flow is like already like 90% complete. Find the download link attached below. On the download page you will find all the hints that are needed to get the final 10% done.

    PuneFlow (PS3FLOW) goes Open Source!!!

    (Two Years Ago) We had the Dream to bring PS3Flow to the Ps3. It will Flow. Bubba went out and got a great coder from the Wii scene.. that was Giantpune!!! Then I added another coder from Wiiflow (MXXXXX)...

    Then we sent them two PS3 systems to build it... Too bad MXXXXX didnt do sht and pissed off Giantpune. Thats the end of the story. You know what happen Next!!! HEHE

    But GiantPune got the Flow done (PSL1GHT) with the GUI and i couldn't ask for anything else.. Big Thanks To Gaintpune. Three weeks ago I went to Zecoxao and deroad=Wargio. They were helping us the past three weeks and we made a new Pkg file for 4.50.. Code Name PUNEFLOW. It is a Open Source C++. It has been tested. The covers work great and the Source is Very Clean.

    I hope someone will take it, make it happen and release something nice open source asap. There are so many great coders out there at PS3Hax and other sites. Enjoy it and Lets see what comes from it.

    Big thanks to Giantpune for all the hard work!
    Big thanks to Bubba for testing and getting the Ps3's!
    Big thanks to Zecoxao and deroad=Wargio!

    PS3FLOW ViDEO





    PS3Flow Source Code

    This is the full PS3Flow (codename PuneFlow) source code. PS3Flow is very similar to the famous WiiFlow for Nintendo Wii. The source is two years old and now it is up to some talented guys out there to finish it and make something nice out of it. Below you will find some hints to make sure one of you gets this done asap.

    A big thank you to GiantPune for bulding it and to Bubba for delivering the full source code and all infos to NFORush!

    Go go go... Let it flow! Some Hints for you...

    You need the fuction to exe selfs...
    Give a look to Eleganz...
    You should add that to the source: github.com/ps3dev/PSL1GHT/blob/534e58950732c54dc6a553910b653c99ba6e9edc/ppu/include/lv2/process.h

    ... the function to exe an eboot. Good luck.

    Authors

    Giantpune / Bubba / Zecoxao / Wargio aka Deroad

    Filename and Size

    libps3gui-master.zip // 4.37MB

    Finally, from zecoxao: This (giantpune.zzl.org/libps3gui.html) has one of the fixes for the errors (wargio's soundlib is updated with regards to this aspect)

    The other issue is symbol stripping (too many symbols make the ELF unable to turn into a SELF due to its size), so don't forget to strip the symbols of the elf when compiling. this also should avoid 99% of the warnings.

    Then there's an issue in cond.h (i think) in which you need to add an include to <ppu-lv2.h>

    Then the freetype issue, solved by changing the directory freetype2/freetype to just freetype/ with the source inside freetype (and changing the corresponding include on the source)

    Those are all i can think of right now. This is the [Register or Login to view links] i messed with with most of the mistakes corrected (taking aside environment mistakes)

    From Abkarino: The updated ps3soundlib need to be modified also, by updating the spu_soundlib file like that:
    Code:
    /* 
        Copyright (C) 1985, 2010  Francisco Muoz "Hermes" <elotrolado.net>
    
        This program is free software: you can redistribute it and/or modify
        it under the terms of the GNU General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.
    
        This program is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU General Public License for more details.
    
        You should have received a copy of the GNU General Public License
        along with this program.  If not, see <gnu.org/licenses/>.
    
    */
    
    
    #ifndef SPU_SNDLIB_H
    #define SPU_SNDLIB_H
    
    #include <ppu-lv2.h>
    #include <ppu-types.h>
    #include <unistd.h>
    #include <sys/spu.h>
    #include <sys/process.h>
    #include <sys/thread.h>
    #include <sysmodule/sysmodule.h>
    
    //#include <sys/event_queue.h>
    
    #include <audio/audio.h>
    
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    #ifdef __cplusplus
    extern "C"
    {
    #endif
    
    #define MAX_SND_VOICES 16
    
    #define MIN_FREQ      1		// 1 Hz
    #define F44100HZ_FREQ 44100	// 44100Hz
    #define MAX_FREQ      144000	// 144000Hz (more process time for freq>48000)
    
    
    // SND return values
    
    #define SND_OK               0
    #define SND_INVALID         -1
    #define SND_ISNOTASONGVOICE -2
    #define SND_BUSY             1
    
    // SND_StatusVoice additional return values
    
    #define SND_UNUSED   0		// you can use this voice
    #define SND_WORKING  1		// this voice is in progress
    #define SND_WAITING  2		// this voice is in progress and waiting to one SND_AddVoice function (the voice handler is called continuously)
    
    // SND_SetVoice format
    
    #define VOICE_MONO_8BIT    0
    #define VOICE_STEREO_8BIT  1
    #define VOICE_MONO_16BIT   2
    #define VOICE_STEREO_16BIT 3
    
    // Voice volume Range
    
    #define MIN_VOLUME 0
    #define MID_VOLUME 127
    #define MAX_VOLUME 255
    
    // note codification
    
    enum {
        NOTE_DO = 0,
        NOTE_DOs,
        NOTE_REb = NOTE_DOs,
        NOTE_RE,
        NOTE_REs,
        NOTE_MIb = NOTE_REs,
        NOTE_MI,
        NOTE_FA,
        NOTE_FAs,
        NOTE_SOLb = NOTE_FAs,
        NOTE_SOL,
        NOTE_SOLs,
        NOTE_LAb = NOTE_SOLs,
        NOTE_LA,
        NOTE_LAs,
        NOTE_SIb = NOTE_LAs,
        NOTE_SI
    };
    
    enum {
        NOTE_C = 0,
        NOTE_Cs,
        NOTE_Db = NOTE_Cs,
        NOTE_D,
        NOTE_Ds,
        NOTE_Eb = NOTE_Ds,
        NOTE_E,
        NOTE_F,
        NOTE_Fs,
        NOTE_Gb = NOTE_Fs,
        NOTE_G,
        NOTE_Gs,
        NOTE_Ab = NOTE_Gs,
        NOTE_A,
        NOTE_As,
        NOTE_Bb = NOTE_As,
        NOTE_B
    };
    
    #define NOTE(note,octave) (note+(octave<<3)+(octave<<2))	// final note codification. Used in Note2Freq()
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    
    /* int Note2Freq(int note, int freq_base,int note_base);
    
    Convert note to freq.
    
    -- Params ---
    
    note: Note codified to play. For example: NOTE(C,4) for note C and octave 4
    
    freq_base: Frequency base of the sample. For example 8000Hz
    
    note_base: Note codified of the sample. For example: NOTE(L,3) for note L and octave 3 (LA 3) 
    
    return: frequency (in Hz)
    
    */
    
    int Note2Freq(int note, int freq_base, int note_base);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    /* General Sound Functions                                                                                                                              */
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* void SND_Init();
    
    Initializes the  spu_soundlib and fix the hardware sample rate to 48000.
    
    -- Params ---
    
    
    return: nothing
    
    */
    
    int SND_Init(u32 spu);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* void SND_End();
    
    De-initializes the spu_soundlib.
    
    return: nothing
    
    */
    
    void SND_End();
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* void SND_Pause(int paused);
    
    Used to pause (or not) the sound. When you call to the SND_Init() function, the sound is paused.
    
    
    -- Params ---
    
    paused: use 0 to run or 1 to pause
    
    return: nothing
    
    */
    
    void SND_Pause(int paused);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    /* Voice Functions                                                                                                                                      */
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_SetVoice(int voice, int format, int freq,int delay, void *snd, int size_snd, int volume_l, int volume_r, void (*callback) (int voice));
    
    Set a PCM voice to play. This function stops one previously voice. Use the SND_StatusVoice() to test the status condition
    
    NOTE: The voices are played in stereo and 16 bits independently of the source format.
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    format: PCM format from VOICE_MONO_8BIT to VOICE_STEREO_16BIT
    
    freq: frequency to play (in Hz) 
    
    delay: delay time in milliseconds (ms). Time to wait before to play the voice
    
    snd: buffer containing the samples (aligned and padded to 32 bytes!!!)
    
    size_snd: size (in bytes) of the buffer samples
    
    volume_l: volume to the left channel from 0 to 255
    
    volume_r: volume to the right channel from 0 to 255
    
    callback: can be NULL or one callback function is used to implement a double buffer use. When the second buffer is empty, the callback is called sending 
              the voice number as parameter. You can use "void callback(int voice)" function to call SND_AddVoice() and add one voice to the second buffer.
    		  NOTE: When callback is fixed the voice never stops and it turn in SND_WAITING status if success one timeout condition.
    
    return: SND_OK or SND_INVALID
    
    */
    
    int SND_SetVoice(int voice, int format, int freq, int delay, void *snd,
    		 int size_snd, int volume_l, int volume_r,
    		 void (*callback) (int voice));
    
    // the same of SND_SetVoice with continous play and without the callback
    
    int SND_SetInfiniteVoice(int voice, int format, int freq, int delay,
    			 void *snd, int size_snd, int volume_l,
    			 int volume_r);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_AddVoice(int voice, void *snd, int size_snd);
    
    Add a PCM voice in the second buffer to play. This function requires one previously call to SND_SetVoice() and one condition status different 
            of 'SND_UNUSED' 
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    snd: buffer containing the samples (aligned and padded to 32 bytes!) in the same format of the previously SND_SetVoice() use
    
    size_snd: size (in bytes) of the buffer samples
    
    return: SND_OK, SND_INVALID or SND_BUSY if the second buffer is not empty and de voice cannot be add
    
    */
    
    int SND_AddVoice(int voice, void *snd, int size_snd);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_StopVoice(int voice);
    
    Stops the voice selected. 
    
    If the voice is used in song mode, you need to assign the samples with SND_SetSongSampleVoice() again. Use SND_PauseSongVoice() in this case to stops
            the voice without lose the samples.
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    return: SND_OK, SND_INVALID
    
    */
    
    int SND_StopVoice(int voice);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_PauseVoice(int voice, int pause);
    
    Pause the voice selected. 
    
    
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    return: SND_OK, SND_INVALID
    
    */
    
    int SND_PauseVoice(int voice, int pause);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_StatusVoice(int voice);
    
    Return the status of the voice selected
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    return: SND_INVALID 
            SND_UNUSED   you can use this voice
            SND_WORKING  this voice is in progress
            SND_WAITING  this voice is in progress and waiting to one SND_AddVoice function (the voice handler is called continuously)
    
    */
    
    int SND_StatusVoice(int voice);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_GetFirstUnusedVoice();
    
    Get the first unused voice. The voice 0 is tried especially and it is the last possible result. The idea is to reserve that voice for a Mod/Ogg/MP3 
           Player or similar. So if the function return a value <1 you can be sure the rest of the voices are working.
    
    -- Params ---
    
    None
    
    return: SND_INVALID or the first free voice (from 0 to (MAX_SND_VOICES-1))
    
    */
    
    int SND_GetFirstUnusedVoice();
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_ChangeFreqVoice(int voice, int freq);
    
    Use this function to change the voice freq in real-time. You can use this to create audio effects.
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    return: SND_OK, SND_INVALID
    
    */
    
    int SND_ChangeFreqVoice(int voice, int freq);
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_ChangeVolumeVoice(int voice, int volume_l, int volume_r);
    
    Use this function to change the voice volume in real-time. You can use this to create audio effects.
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    volume_l: volume to the left channel from 0 to 255
    
    volume_r: volume to the right channel from 0 to 255
    
    return: SND_OK, SND_INVALID
    
    */
    
    int SND_ChangeVolumeVoice(int voice, int volume_l, int volume_r);
    
    
    /*------------------------------------------------------------------------------------------------------------------------------------------------------*/
    
    /* int SND_TestVoiceBufferReady(int voice);
    
    Test if the Voice is Ready to receive a new buffer sample with SND_AddVoice(). You can use this function to block a reader when you use double buffering
    as similar form of the SND_TestPointer() function without passing one address to test
    
    -- Params ---
    
    voice: use one from 0 to (MAX_SND_VOICES-1)
    
    return: SND_INVALID, 0-> not ready to receive a new AddVoice(), 1->ready to receive a new AddVoice()
    
    */
    
    int SND_TestVoiceBufferReady(int voice);
    
    #endif
    
    #ifdef __cplusplus
    }
    #endif
    And now it will build successfully I had successfully build PS3Flow now. Also i had created a PKG for installing it, and i'll test it tomorrow to see if it work or not. Also i had modified the makefile script to fix some issues and to be able to build and finalize the PKG file. Here is my build log:
    Code:
    MHassan@MHassan-PC ~/libps3gui
    $ make pkg
    make[1]: Nothing to be done for `/home/MHassan/libps3gui/source/resources'.
    [BIN2S] button_click.pcm
    [BIN2S] button_over.pcm
    [BIN2S] aboutWindow.png
    [BIN2S] background.png
    [BIN2S] bg_file_selection.png
    [BIN2S] bg_file_selection_entry.png
    [BIN2S] bg_options.png
    [BIN2S] bg_options_entry.png
    [BIN2S] bottomButtonWindow.png
    [BIN2S] boxBorder.png
    [BIN2S] boxLogos.png
    [BIN2S] button.png
    [BIN2S] button_large.png
    [BIN2S] button_large_over.png
    [BIN2S] button_over.png
    [BIN2S] cero_a.png
    [BIN2S] cero_b.png
    [BIN2S] cero_c.png
    [BIN2S] cero_d.png
    [BIN2S] cero_z.png
    [BIN2S] dialogue_box.png
    [BIN2S] esrb_ao.png
    [BIN2S] esrb_e.png
    [BIN2S] esrb_ec.png
    [BIN2S] esrb_eten.png
    [BIN2S] esrb_m.png
    [BIN2S] esrb_t.png
    [BIN2S] filebrowser_textbox.png
    [BIN2S] folder.png
    [BIN2S] keyboard_key.png
    [BIN2S] keyboard_key_over.png
    [BIN2S] keyboard_largekey.png
    [BIN2S] keyboard_largekey_over.png
    [BIN2S] keyboard_mediumkey.png
    [BIN2S] keyboard_mediumkey_over.png
    [BIN2S] keyboard_textbox.png
    [BIN2S] no_ICON0.png
    [BIN2S] nocoverFull.png
    [BIN2S] norating.png
    [BIN2S] pegi_12.png
    [BIN2S] pegi_16.png
    [BIN2S] pegi_18.png
    [BIN2S] pegi_3.png
    [BIN2S] pegi_7.png
    [BIN2S] player1_point.png
    [BIN2S] player2_point.png
    [BIN2S] player3_point.png
    [BIN2S] player4_point.png
    [BIN2S] progressbar.png
    [BIN2S] progressbar_empty.png
    [BIN2S] progressbar_outline.png
    [BIN2S] scrollbar.png
    [BIN2S] scrollbar_arrowdown.png
    [BIN2S] scrollbar_arrowdown_over.png
    [BIN2S] scrollbar_arrowup.png
    [BIN2S] scrollbar_arrowup_over.png
    [BIN2S] scrollbar_box.png
    [BIN2S] scrollbar_box_over.png
    [BIN2S] bg_music.ogg
    [BIN2S] button_click.wav
    [BIN2S] button_click2.wav
    [BIN2S] button_over.wav
    linking ... libps3gui.elf
    CEX self ... libps3gui.self
    scetool 0.2.9 <public build> (C) 2011-2012 by naehrwert
    NP local license handling (C) 2012 by flatz[*] SELF built.[*] Data compressed.[*] Data encrypted.[*] C:/PS3SDK/MinGW/msys/1.0/home/MHassan/libps3gui/libps3gui.self written.
    Creating PKG...
    [X] Magic: 7f504b47
    [X] Type: 00000001
    [X] Offset to package info: 000000c0
    [ ] unk1: 00000005
    [X] Head Size: 00000080
    [X] Item Count: 00000004
    [X] Package Size: 0000000000c35410
    [X] Data Offset: 0000000000000140
    [X] Data Size: 0000000000c35270
    [X] ContentID: 'UP0001-PS3FLOW10_00-0000000000000000'
    [X] QA_Digest: AFD2516A50E371CB2E2268A15CC7D28D
    [X] K Licensee: 00000000000000000000000000000000
    
    MHassan@MHassan-PC ~/libps3gui
    And here is the modified makefile:
    Code:
    #---------------------------------------------------------------------------------
    # Clear the implicit built in rules
    #---------------------------------------------------------------------------------
    .SUFFIXES:
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(PSL1GHT)),)
    $(error "Please set PSL1GHT in your environment. export PSL1GHT=<path>")
    endif
    
    include $(PSL1GHT)/ppu_rules
    
    #---------------------------------------------------------------------------------
    # TARGET is the name of the output
    # BUILD is the directory where object files & intermediate files will be placed
    # SOURCES is a list of directories containing source code
    # INCLUDES is a list of directories containing extra header files
    #---------------------------------------------------------------------------------
    TARGET		:=	$(notdir $(CURDIR))
    BUILD		:=	build
    #RESOURCELIST	:= source/resources/resourcelist.cpp
    RESOURCES	:=  source/images \
    				source/sounds
    SOURCES		:=	source \
    				source/resources \
    				source/network \
    				$(RESOURCES)
    DATA		:=	data
    INCLUDES	:=	include $(PORTLIBS)/include
    
    
    TITLE		:=	PS3Flow
    APPID		:=	PS3FLOW10
    CONTENTID	:=	UP0001-$(APPID)_00-0000000000000000
    PKGFILES	:=	release
    SFOXML		:=	$(CURDIR)/sfo.xml
    ICON0		:=	$(CURDIR)/ICON0.PNG
    
    #---------------------------------------------------------------------------------
    # options for code generation
    #---------------------------------------------------------------------------------
    CFLAGS		=	-O2 -Wall -mcpu=cell $(MACHDEP) $(INCLUDE) -DCONTENT_ID=\"$(CONTENTID)\" -DAPP_ID=\"$(APPID)\"
    CXXFLAGS	=	$(CFLAGS) -DCONTENT_ID=\"$(CONTENTID)\" -DAPP_ID=\"$(APPID)\"
    
    LDFLAGS		=	$(MACHDEP) -Wl,-Map,$(notdir $@).map
    
    #---------------------------------------------------------------------------------
    # any extra libraries we wish to link with the project
    #---------------------------------------------------------------------------------
    AUDIOLIBS	:= -laudioplayer -lmpg123 -logg -lspu_sound -laudio -lm -lsysfs $(PORTLIBS)/lib/spu_soundmodule.bin.a
    LIBS		:=	$(AUDIOLIBS) -ltiny3d -lfreetype -lz -lrsx -lgcm_sys -lio -lsysutil -lrt -llv2 -lm -lsysfs \
    			-lpngdec -ljpgdec -lsysmodule -lnet
    			
    LIBDIRS		:=	$(PORTLIBS) 
    #---------------------------------------------------------------------------------
    # no real need to edit anything past this point unless you need to add additional
    # rules for different file extensions
    #---------------------------------------------------------------------------------
    ifneq ($(BUILD),$(notdir $(CURDIR)))
    #---------------------------------------------------------------------------------
    
    export OUTPUT	:=	$(CURDIR)/$(TARGET)
    
    export VPATH	:=	$(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
    					$(foreach dir,$(DATA),$(CURDIR)/$(dir))
    
    export DEPSDIR	:=	$(CURDIR)/$(BUILD)
    
    #---------------------------------------------------------------------------------
    # automatically build a list of object files for our project
    #---------------------------------------------------------------------------------
    CFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
    CPPFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
    sFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
    SFILES		:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.S)))
    BINFILES	:=	$(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
    TTFFILES	:= $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ttf)))
    PNGFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.png)))
    PCMFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcm)))
    OGGFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.ogg)))
    MP3FILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.mp3)))
    WAVFILES	:=	$(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.wav)))
    
    #---------------------------------------------------------------------------------
    # use CXX for linking C++ projects, CC for standard C
    #---------------------------------------------------------------------------------
    ifeq ($(strip $(CPPFILES)),)
    	export LD	:=	$(CC)
    else
    	export LD	:=	$(CXX)
    endif
    
    export OFILES	:=	$(addsuffix .o,$(BINFILES)) \
    					$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) \
    					$(sFILES:.s=.o) $(SFILES:.S=.o) \
    					$(PCMFILES:.pcm=.pcm.o) $(PNGFILES:.png=.png.o) \
    					$(OGGFILES:.ogg=.ogg.o) $(MP3FILES:.mp3=.mp3.o) \
    					$(WAVFILES:.wav=.wav.o)
    
    #---------------------------------------------------------------------------------
    # build a list of include paths
    #---------------------------------------------------------------------------------
    export INCLUDE	:=	$(foreach dir,$(INCLUDES), -I$(CURDIR)/$(dir)) \
    					$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
    					$(LIBPSL1GHT_INC) \
    					-I$(CURDIR)/$(BUILD)
    
    #---------------------------------------------------------------------------------
    # build a list of library paths
    #---------------------------------------------------------------------------------
    export LIBPATHS	:=	$(foreach dir,$(LIBDIRS),-L$(dir)/lib) \
    					$(LIBPSL1GHT_LIB)
    
    export OUTPUT	:=	$(CURDIR)/$(TARGET)
    .PHONY: $(BUILD) clean
    
    #---------------------------------------------------------------------------------
    $(BUILD):
    	@[ -d $@ ] || mkdir -p $@
    	@$(MAKE) --no-print-directory resources
    	@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
    	@mv -f $(TARGET).elf $(BUILD)
    
    #---------------------------------------------------------------------------------
    clean:
    	 
    @Echo
      clean ...
    	@rm -fr $(BUILD) $(OUTPUT).elf $(OUTPUT).self
    
    
    #resources:
    #	@./resourceLister $(RESOURCELIST) $(RESOURCES)
    
    
    #---------------------------------------------------------------------------------
    run:
    	ps3load $(BUILD)/$(OUTPUT).self
    
    #pkg: $(BUILD) $(OUTPUT).pkg
    pkg: $(BUILD)
    	 
    @Echo
      Creating PKG...
    	 
    @mkd
     ir -p $(BUILD)/pkg
    	 
    @mkd
     ir -p $(BUILD)/pkg/USRDIR
    	@cp $(ICON0) $(BUILD)/pkg/
    	@$(FSELF) -n $(BUILD)/$(TARGET).elf $(BUILD)/pkg/USRDIR/EBOOT.BIN
    	@$(SFO) --title "$(TITLE)" --appid "$(APPID)" -f $(SFOXML) $(BUILD)/pkg/PARAM.SFO
    	@$(PKG) --contentid $(CONTENTID) $(BUILD)/pkg/ $(OUTPUT).pkg
    	 
    @Pack
     age_finalize $(OUTPUT).pkg
    
    
    #---------------------------------------------------------------------------------
    else
    
    DEPENDS	:= $(OFILES:.o=.d)
    
    #---------------------------------------------------------------------------------
    # main targets
    #---------------------------------------------------------------------------------
    $(OUTPUT).self: $(OUTPUT).elf
    $(OUTPUT).elf: $(OFILES)
    
    #---------------------------------------------------------------------------------
    # This rule links in binary data with the .bin extension
    #---------------------------------------------------------------------------------
    %.bin.o : %.bin
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.ttf.o : %.ttf
    		 
    @Echo
      [BIN2S] $(notdir $<)
    		 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.png.o : %.png
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.pcm.o : %.pcm
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.ogg.o : %.ogg
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.mp3.o : %.mp3
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.wav.o : %.wav
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    %.SFO.o : %.SFO
    	 
    @Echo
      [BIN2S] $(notdir $<)
    	 
    @bin
     2s -a 32 $< | $(AS) -o $(@)
    
    -include $(DEPENDS)
    
    #---------------------------------------------------------------------------------
    endif
    #---------------------------------------------------------------------------------
    Hope that help any body want to build the PS3Flow

    Finally, from Greysmoke: Hello everyone, here's a lil somthing a friendly bird showed me, straight off the grape vine. (pastebin.com/wYeAzjKR)
    Code:
    #include <QtCore/QCoreApplication>
    #include <QDateTime>
    #include <QDir>
    #include <QFile>
    #include <QtDebug>
    
    QString outFileName;
    QStringList sourceDirPaths;
    QStringList sourceFileNames;
    QStringList namesUnderscore;
    
    void Usage()
    {
    	qDebug() << "Usage: resourceLister <output file> <source directories>";
    	exit( 1 );
    }
    
    bool NeedToUpdateFile()
    {
    	if( outFileName.isEmpty() )
    		Usage();
    
    	QFileInfo fi( outFileName );
    	if( fi.isDir() )
    		Usage();
    
    	if( !fi.exists() )
    		return true;
    
    	QDateTime outFileMod = fi.lastModified();
    	foreach( QString str, sourceFileNames )
    	{
    		QDateTime lm = QFileInfo( str ).lastModified();
    		//qDebug() << lm << outFileMod;
    		if( lm > outFileMod )
    		{
    			qDebug() << str << "is newer than" << outFileName;
    			return true;
    		}
    	}
    	qDebug() << outFileName << "is newer than all resource files";
    	return false;
    }
    
    void AddSources( const QString &source )
    {
    	QFileInfo fi( source );
    	if( !fi.exists() )
    	{
    		qDebug() << source << "doesnt exist";
    		return;
    	}
    	if( fi.isFile() )
    	{
    		sourceFileNames << source;
    		return;
    	}
    
    	QDir dir( source, "", QDir::Unsorted, QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot );
    	QFileInfoList fil = dir.entryInfoList();
    	foreach( QFileInfo fi2, fil )
    	{
    		if( fi2.isDir() )
    		{
    			AddSources( source + "/" + fi2.fileName() );
    		}
    		else
    		{
    			QString underScore = fi2.fileName();
    			underScore.replace( ".", "_" );
    			namesUnderscore << underScore;
    			sourceFileNames << source + "/" + fi2.fileName();
    		}
    	}
    }
    
    bool WriteFile( const QString &path, const QByteArray &ba )
    {
    	QFile file( path );
    	if( !file.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
    	{
    		qWarning() << "WriteFile -> can't open" << path;
    		return false;
    	}
    	if( file.write( ba ) != ba.size() )
    	{
    		file.close();
    		qWarning() << "WriteFile -> can't write all the data to" << path;
    		return false;
    	}
    	file.close();
    	return true;
    }
    
    bool CreateOutfile()
    {
    	QString outFile =
    	"\n"
    	"/*****************************************************\n"
    	"* this file is automatically generated at compile time\n"
    	"* do not edit it manually.  changes will be lost\n"
    	"******************************************************/\n"
    	"\n"
    	"\n"
    	"#include \"resourcelist.h\"\n"
    	"#include \"../utils.h\"\n"
    	"\n";
    	foreach( QString str, namesUnderscore )
    	{
    		outFile += "INC_FILE( " + str + " );\n";
    	}
    
    	outFile +=
    	"\n"
    	"namespace ResourceList\n"
    	"{\n"
    	"\n"
    	"map< string, pair< u8*, u32 > >list;\n"
    	"\n"
    	"const map< string, pair< u8*, u32 > > &List()\n"
    	"{\n"
    	"\treturn list;\n"
    	"}\n"
    	"\n"
    	"void BuildList()\n"
    	"{\n"
    	"\tlist.clear();\n";
    
    	int i = 0;
    	foreach( QString str, sourceFileNames )
    	{
    		if( str.startsWith( "source/" ) )
    			str.remove( 0, 7 );
    		else if( str.startsWith( "data/" ) )
    			str.remove( 0, 5 );
    		outFile += "\tlist[ \"" + str + "\" ] = pair< u8*, u32 >( (u8*)"
    			   + namesUnderscore.at( i ) + ", " + namesUnderscore.at( i ) + "_size );\n";
    
    		i++;
    	}
    	outFile +=
    	"}\n"
    	"\n"
    	"}\n"
    	"\n";
    
    	return WriteFile( outFileName, outFile.toLocal8Bit() );
    }
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
    	QStringList args = QCoreApplication::arguments();
    	if( args.size() < 3 )
    	{
    		Usage();
    	}
    	args.takeFirst();					//remove this program's name
    	outFileName = args.takeFirst();		//output filename
    	sourceDirPaths = args;
    	foreach( QString str, sourceDirPaths )//build a list of resource names
    	{
    		AddSources( str );
    	}
    
    	//check if any of the resource files are newer than the resource file
    	if( !NeedToUpdateFile() )
    		return 0;
    
    	//build the output file
    	if( !CreateOutfile() )
    		return 1;
    
    	qDebug() << "updated" << outFileName;
    	return 0;
    }
    You will need that to make a pkg file for ps3flow. Bubba wanted to give us the last remaining piece of the puzzle we were missing! THANKS BUBBA AND GIANTPUNE!

    P.S. Bubba says marry christmas , he is a bit busy testing something WiiU related.

    Video: PS3Flow (aka PuneFlow) PS3 Flow Source Code is Released

    Video: PS3Flow (aka PuneFlow) PS3 Flow Source Code is Released

    More PlayStation 3 News...
    Attached Files Attached Files

  2. #2
    Senior Member seeman's Avatar
    Join Date
    Mar 2011
    Posts
    97
    Sponsored Links
    Sponsored Links
    wiiflow is by way the best wii backupmanager... really looking forward for this!

  3. #3
    Registered User mg3's Avatar
    Join Date
    Oct 2010
    Posts
    3
    Sponsored Links
    Sponsored Links
    aaawwsome!!! work guys with multiman this would be off the chain !!!!

  4. #4
    Registered User hfmls's Avatar
    Join Date
    Jun 2013
    Posts
    1
    Sponsored Links
    Sponsored Links
    hope this goes into multiman

  5. #5
    Senior Member joffe's Avatar
    Join Date
    Apr 2010
    Posts
    98
    Wow, one day and dropbox link is already dead?

    Found it also here: [Register or Login to view links]

  6. #6
    Forum Moderator PS3 News's Avatar
    Join Date
    Apr 2005
    Posts
    27,452

    PS3Flow Fork BiteYourFlow in Development By BiteYourConsole

    Following up on the previous update, today a PS3Flow fork dubbed BiteYourFlow by BiteYourConsole is officially in development with details below.

    Download: [Register or Login to view links] / [Register or Login to view links] (Mirror) / [Register or Login to view links] (Ps3Flow-master.rar)

    To quote, roughly translated: BiteYourConsole seeks to bring to the fore a new backup manager known by the name of PS3Flow (PuneFlow), for the first time and exclusively in the pages of BiteYourConsole it is released PKG file

    The backup manager takes as its basis a new GUI library called libps3gui, a porting of the most famous libwiigui, graphics library for Wii, originally created to help structure the project in a more complex interface.

    Our intention at the time was to confirm that they are working properly, only two options for the Path GUI mode, and while there are still advanced features that will be added later.

    BiteYourConsole is committed to wanting to build a first fork named BiteYourFlow, integrating some of the features of Iris Manager suitably developed to allow full control over the new libraries.




    A big thank you goes to Giantpune, zecoxao and Deroad for having supported the project to date.

    PS3Flow Fork BiteYourFlow in Development By BiteYourConsole

    PS3Flow Fork BiteYourFlow in Development By BiteYourConsole

    PS3Flow Fork BiteYourFlow in Development By BiteYourConsole

    More PlayStation 3 News...
    Attached Images<br><br> Attached Images


 

Sponsored Links

Affiliates - Contact Us - PS3 Downloads - Privacy Statement - Site Rules - Top - © 2014 PlayStation 3 News